Re: request_irq() with local bh disabled
From: Borislav Petkov
Date: Fri Mar 07 2025 - 06:56:29 EST
On Thu, Mar 06, 2025 at 05:19:12PM +0100, Borislav Petkov wrote:
> On Thu, Mar 06, 2025 at 02:45:16PM +0100, Eric Dumazet wrote:
> > Hmmm.. not sure why local_bh is considered held..
>
> Yeah, it looks like it is some crap in tip as current mainline is fine.
>
> Lemme see what I can find there.
>
> Thx and sorry for the noise.
As already mentioned by Mr. Z on the tip-bot message thread, below commit
breaks lockdep.
Reverting it fixes the issue, ofc.
$ git bisect start
# status: waiting for both good and bad commits
# good: [848e076317446f9c663771ddec142d7c2eb4cb43] Merge tag 'hid-for-linus-2025030501' of git://git.kernel.org/pub/scm/linux/kernel/git/hid/hid
git bisect good 848e076317446f9c663771ddec142d7c2eb4cb43
# status: waiting for bad commit, 1 good commit known
# bad: [f4444d22a90c3fb0c825195b4154455d42986f21] Merge remote-tracking branch 'tip/master' into rc5+
git bisect bad f4444d22a90c3fb0c825195b4154455d42986f21
# bad: [6714630acf3cae8974e62a810389dcb191ac49af] Merge branch into tip/master: 'sched/core'
git bisect bad 6714630acf3cae8974e62a810389dcb191ac49af
# good: [156a8975430b127b5000b9018cb220fddf633164] Merge branch into tip/master: 'irq/core'
git bisect good 156a8975430b127b5000b9018cb220fddf633164
# bad: [468fad69db143874eaaeb472816f424e261df570] Merge branch into tip/master: 'locking/core'
git bisect bad 468fad69db143874eaaeb472816f424e261df570
# good: [f5de95438834a3bc3ad747f67c9da93cd08e5008] irqchip/renesas-rzv2h: Simplify rzv2h_icu_init()
git bisect good f5de95438834a3bc3ad747f67c9da93cd08e5008
# bad: [5fc1506d33db23894e74caf048ba5591f4986767] rust: lockdep: Remove support for dynamically allocated LockClassKeys
git bisect bad 5fc1506d33db23894e74caf048ba5591f4986767
# bad: [9b4070d36399ffcadc92c918bd80da036a16faed] locking/lock_events: Add locking events for rtmutex slow paths
git bisect bad 9b4070d36399ffcadc92c918bd80da036a16faed
# good: [337369f8ce9e20226402cf139c4f0d3ada7d1705] locking/mutex: Add MUTEX_WARN_ON() into fast path
git bisect good 337369f8ce9e20226402cf139c4f0d3ada7d1705
# bad: [8a9d677a395703ef9075c91dd04066be8a553405] lockdep: Fix wait context check on softirq for PREEMPT_RT
git bisect bad 8a9d677a395703ef9075c91dd04066be8a553405
# good: [5ddd09863c676935c18c8a13f5afb6d9992cbdeb] locking/rtmutex: Use struct keyword in kernel-doc comment
git bisect good 5ddd09863c676935c18c8a13f5afb6d9992cbdeb
# first bad commit: [8a9d677a395703ef9075c91dd04066be8a553405] lockdep: Fix wait context check on softirq for PREEMPT_RT
Author: Ryo Takakura <ryotkkr98@xxxxxxxxx>
Date: Sat Jan 18 14:49:00 2025 +0900
lockdep: Fix wait context check on softirq for PREEMPT_RT
Since commit 0c1d7a2c2d32 ("lockdep: Remove softirq accounting on
PREEMPT_RT."), the wait context test for mutex usage within
"in softirq context" fails as it references @softirq_context.
[ 0.184549] | wait context tests |
[ 0.184549] --------------------------------------------------------------------------
[ 0.184549] | rcu | raw | spin |mutex |
[ 0.184549] --------------------------------------------------------------------------
[ 0.184550] in hardirq context: ok | ok | ok | ok |
[ 0.185083] in hardirq context (not threaded): ok | ok | ok | ok |
[ 0.185606] in softirq context: ok | ok | ok |FAILED|
As a fix, add lockdep map for BH disabled section. This fixes the
issue by letting us catch cases when local_bh_disable() gets called
with preemption disabled where local_lock doesn't get acquired.
In the case of "in softirq context" selftest, local_bh_disable() was
being called with preemption disable as it's early in the boot.
Signed-off-by: Ryo Takakura <ryotkkr98@xxxxxxxxx>
Signed-off-by: Boqun Feng <boqun.feng@xxxxxxxxx>
Link: https://lore.kernel.org/r/20250118054900.18639-1-ryotkkr98@xxxxxxxxx
--
Regards/Gruss,
Boris.
https://people.kernel.org/tglx/notes-about-netiquette