Patch "LoongArch: Set unwind stack type to unknown rather than set error flag" has been added to the 6.6-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    LoongArch: Set unwind stack type to unknown rather than set error flag

to the 6.6-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     loongarch-set-unwind-stack-type-to-unknown-rather-th.patch
and it can be found in the queue-6.6 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 57515776f3f0c2c9f4f7c34cc88d072ea44f4fed
Author: Jinyang He <hejinyang@xxxxxxxxxxx>
Date:   Sat Dec 9 15:49:15 2023 +0800

    LoongArch: Set unwind stack type to unknown rather than set error flag
    
    [ Upstream commit 97ceddbc9404a7d1e2c4049435bff29427d762cc ]
    
    During unwinding, unwind_done() is used as an end condition. Normally it
    unwind to the user stack and then set the stack type to unknown, which
    is a normal exit. When something unexpected happens in unwind process
    and we cannot unwind anymore, we should set the error flag, and also set
    the stack type to unknown to indicate that the unwind process can not
    continue. The error flag emphasizes that the unwind process produce an
    unexpected error. There is no unexpected things when we unwind the PT_REGS
    in the top of IRQ stack and find out that is an user mode PT_REGS. Thus,
    we should not set error flag and just set stack type to unknown.
    
    Reported-by: Hengqi Chen <hengqi.chen@xxxxxxxxx>
    Acked-by: Hengqi Chen <hengqi.chen@xxxxxxxxx>
    Signed-off-by: Jinyang He <hejinyang@xxxxxxxxxxx>
    Signed-off-by: Huacai Chen <chenhuacai@xxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/arch/loongarch/kernel/stacktrace.c b/arch/loongarch/kernel/stacktrace.c
index 92270f14db94..f623feb2129f 100644
--- a/arch/loongarch/kernel/stacktrace.c
+++ b/arch/loongarch/kernel/stacktrace.c
@@ -32,7 +32,7 @@ void arch_stack_walk(stack_trace_consume_fn consume_entry, void *cookie,
 	}
 
 	for (unwind_start(&state, task, regs);
-	     !unwind_done(&state) && !unwind_error(&state); unwind_next_frame(&state)) {
+	     !unwind_done(&state); unwind_next_frame(&state)) {
 		addr = unwind_get_return_address(&state);
 		if (!addr || !consume_entry(cookie, addr))
 			break;
diff --git a/arch/loongarch/kernel/unwind.c b/arch/loongarch/kernel/unwind.c
index ba324ba76fa1..a463d6961344 100644
--- a/arch/loongarch/kernel/unwind.c
+++ b/arch/loongarch/kernel/unwind.c
@@ -28,6 +28,5 @@ bool default_next_frame(struct unwind_state *state)
 
 	} while (!get_stack_info(state->sp, state->task, info));
 
-	state->error = true;
 	return false;
 }
diff --git a/arch/loongarch/kernel/unwind_prologue.c b/arch/loongarch/kernel/unwind_prologue.c
index 55afc27320e1..929ae240280a 100644
--- a/arch/loongarch/kernel/unwind_prologue.c
+++ b/arch/loongarch/kernel/unwind_prologue.c
@@ -227,7 +227,7 @@ static bool next_frame(struct unwind_state *state)
 	} while (!get_stack_info(state->sp, state->task, info));
 
 out:
-	state->error = true;
+	state->stack_info.type = STACK_TYPE_UNKNOWN;
 	return false;
 }
 




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux