LoongArch: Check unwind_error() in arch_stack_walk()
authorTiezhu Yang <yangtiezhu@loongson.cn>
Wed, 19 Apr 2023 04:07:27 +0000 (12:07 +0800)
committerHuacai Chen <chenhuacai@loongson.cn>
Wed, 19 Apr 2023 04:07:27 +0000 (12:07 +0800)
commit370a3b8f58743eceb97c5256538d6048c26d2d03
tree64444dac60c812d9622e2d4e3f68150f313c7183
parente32b3b8222204df8a2642a770f79ec2d7086faed
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>
arch/loongarch/kernel/stacktrace.c
arch/loongarch/kernel/unwind.c
arch/loongarch/kernel/unwind_prologue.c