diff options
author | Tiezhu Yang <yangtiezhu@loongson.cn> | 2023-04-19 07:07:27 +0300 |
---|---|---|
committer | Huacai Chen <chenhuacai@loongson.cn> | 2023-04-19 07:07:27 +0300 |
commit | 370a3b8f58743eceb97c5256538d6048c26d2d03 (patch) | |
tree | 64444dac60c812d9622e2d4e3f68150f313c7183 /arch/loongarch/kernel/unwind.c | |
parent | e32b3b8222204df8a2642a770f79ec2d7086faed (diff) | |
download | linux-370a3b8f58743eceb97c5256538d6048c26d2d03.tar.xz |
LoongArch: Check unwind_error() in arch_stack_walk()
We can see the following messages with CONFIG_PROVE_LOCKING=y on
LoongArch:
BUG: MAX_STACK_TRACE_ENTRIES too low!
turning off the locking correctness validator.
This is because stack_trace_save() returns a big value after call
arch_stack_walk(), here is the call trace:
save_trace()
stack_trace_save()
arch_stack_walk()
stack_trace_consume_entry()
arch_stack_walk() should return immediately if unwind_next_frame()
failed, no need to do the useless loops to increase the value of c->len
in stack_trace_consume_entry(), then we can fix the above problem.
Cc: stable@vger.kernel.org
Reported-by: Guenter Roeck <linux@roeck-us.net>
Link: https://lore.kernel.org/all/8a44ad71-68d2-4926-892f-72bfc7a67e2a@roeck-us.net/
Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
Diffstat (limited to 'arch/loongarch/kernel/unwind.c')
-rw-r--r-- | arch/loongarch/kernel/unwind.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/arch/loongarch/kernel/unwind.c b/arch/loongarch/kernel/unwind.c index a463d6961344..ba324ba76fa1 100644 --- a/arch/loongarch/kernel/unwind.c +++ b/arch/loongarch/kernel/unwind.c @@ -28,5 +28,6 @@ bool default_next_frame(struct unwind_state *state) } while (!get_stack_info(state->sp, state->task, info)); + state->error = true; return false; } |