diff options
author | Daniel Thompson <daniel.thompson@linaro.org> | 2020-02-06 14:40:09 +0300 |
---|---|---|
committer | Daniel Thompson <daniel.thompson@linaro.org> | 2020-02-06 14:40:09 +0300 |
commit | fcf2736c82ca1908e3a0e74730c404baebd8ccdf (patch) | |
tree | 0e1784f5f1253c621cddfb1857e1753277569934 /kernel | |
parent | dc2c733e65848b1df8d55c83eea79fc4a868c800 (diff) | |
download | linux-fcf2736c82ca1908e3a0e74730c404baebd8ccdf.tar.xz |
Revert "kdb: Get rid of confusing diag msg from "rd" if current task has no regs"
This reverts commit bbfceba15f8d1260c328a254efc2b3f2deae4904.
When DBG_MAX_REG_NUM is zero then a number of symbols are conditionally
defined. It is therefore not possible to check it using C expressions.
Reported-by: Anatoly Pugachev <matorola@gmail.com>
Acked-by: Doug Anderson <dianders@chromium.org>
Signed-off-by: Daniel Thompson <daniel.thompson@linaro.org>
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/debug/kdb/kdb_main.c | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/kernel/debug/kdb/kdb_main.c b/kernel/debug/kdb/kdb_main.c index b22292b649c4..ba12e9f4661e 100644 --- a/kernel/debug/kdb/kdb_main.c +++ b/kernel/debug/kdb/kdb_main.c @@ -543,8 +543,9 @@ int kdbgetaddrarg(int argc, const char **argv, int *nextarg, if (diag) return diag; } else if (symname[0] == '%') { - if (kdb_check_regs()) - return 0; + diag = kdb_check_regs(); + if (diag) + return diag; /* Implement register values with % at a later time as it is * arch optional. */ @@ -1835,7 +1836,8 @@ static int kdb_go(int argc, const char **argv) */ static int kdb_rd(int argc, const char **argv) { - int len = 0; + int len = kdb_check_regs(); +#if DBG_MAX_REG_NUM > 0 int i; char *rname; int rsize; @@ -1844,14 +1846,8 @@ static int kdb_rd(int argc, const char **argv) u16 reg16; u8 reg8; - if (kdb_check_regs()) - return 0; - - /* Fallback to Linux showregs() if we don't have DBG_MAX_REG_NUM */ - if (DBG_MAX_REG_NUM <= 0) { - kdb_dumpregs(kdb_current_regs); - return 0; - } + if (len) + return len; for (i = 0; i < DBG_MAX_REG_NUM; i++) { rsize = dbg_reg_def[i].size * 2; @@ -1893,7 +1889,12 @@ static int kdb_rd(int argc, const char **argv) } } kdb_printf("\n"); +#else + if (len) + return len; + kdb_dumpregs(kdb_current_regs); +#endif return 0; } @@ -1927,8 +1928,9 @@ static int kdb_rm(int argc, const char **argv) if (diag) return diag; - if (kdb_check_regs()) - return 0; + diag = kdb_check_regs(); + if (diag) + return diag; diag = KDB_BADREG; for (i = 0; i < DBG_MAX_REG_NUM; i++) { |