[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20201218154519.GW3092@hirez.programming.kicks-ass.net>
Date: Fri, 18 Dec 2020 16:45:19 +0100
From: Peter Zijlstra <peterz@...radead.org>
To: Heiko Carstens <hca@...ux.ibm.com>
Cc: Steven Rostedt <rostedt@...dmis.org>,
Thomas Gleixner <tglx@...utronix.de>,
linux-kernel@...r.kernel.org, Sven Schnelle <svens@...ux.ibm.com>
Subject: Re: __local_bh_enable_ip() vs lockdep
On Fri, Dec 18, 2020 at 04:37:16PM +0100, Peter Zijlstra wrote:
> On Fri, Dec 18, 2020 at 04:33:56PM +0100, Heiko Carstens wrote:
>
> > Peter, will you make proper patch out of this?
>
> Yes, let me go do that now, and stick it in the quilt series before I go
> off and don't think for 2 weeks.
As below, I'll try and push it out to tip/locking/urgent before I really
dissapear.
---
Subject: softirq: Avoid bad tracing / lockdep interaction
From: Peter Zijlstra <peterz@...radead.org>
Date: Fri Dec 18 16:39:14 CET 2020
Similar to commit:
1a63dcd8765b ("softirq: Reorder trace_softirqs_on to prevent lockdep splat")
__local_bh_enable_ip() can also call into tracing with inconsistent
state. Unlike that commit we don't need to bother about the tracepoint
because 'cnt-1' never matches preempt_count() (by construction).
Reported-by: Heiko Carstens <hca@...ux.ibm.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@...radead.org>
Tested-by: Heiko Carstens <hca@...ux.ibm.com>
---
kernel/softirq.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/kernel/softirq.c
+++ b/kernel/softirq.c
@@ -186,7 +186,7 @@ void __local_bh_enable_ip(unsigned long
* Keep preemption disabled until we are done with
* softirq processing:
*/
- preempt_count_sub(cnt - 1);
+ __preempt_count_sub(cnt - 1);
if (unlikely(!in_interrupt() && local_softirq_pending())) {
/*
Powered by blists - more mailing lists