All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <oliver.sang@intel.com>
To: "A. Sterling" <adam.sterling@gmail.com>
Cc: <oe-lkp@lists.linux.dev>, <lkp@intel.com>,
	<linux-fsdevel@vger.kernel.org>,
	Christian Brauner <brauner@kernel.org>,
	Alexander Viro <viro@zeniv.linux.org.uk>, Jan Kara <jack@suse.cz>,
	<linux-kernel@vger.kernel.org>, <oliver.sang@intel.com>
Subject: Re: [PATCH] pidfs: pin stashed dentry for pid lifetime to fix repeat-open regression
Date: Thu, 18 Jun 2026 14:36:43 +0800	[thread overview]
Message-ID: <202606180805.1b2fdd03-lkp@intel.com> (raw)



Hello,

kernel test robot noticed "WARNING:possible_irq_lock_inversion_dependency_detected" on:

commit: 028b94b023efe53f26decb0497e3ffe5b9e16ee9 ("[PATCH] pidfs: pin stashed dentry for pid lifetime to fix repeat-open regression")
url: https://github.com/intel-lab-lkp/linux/commits/A-Sterling/pidfs-pin-stashed-dentry-for-pid-lifetime-to-fix-repeat-open-regression/20260612-190630
base: https://git.kernel.org/cgit/linux/kernel/git/vfs/vfs.git vfs.all
patch link: https://lore.kernel.org/all/20260612110529.80055-1-adam.sterling@gmail.com/
patch subject: [PATCH] pidfs: pin stashed dentry for pid lifetime to fix repeat-open regression

in testcase: boot

config: x86_64-rhel-9.4-bpf
compiler: gcc-14
test machine: qemu-system-x86_64 -enable-kvm -cpu SandyBridge -smp 2 -m 32G

(please refer to attached dmesg/kmsg for entire log/backtrace)



If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <oliver.sang@intel.com>
| Closes: https://lore.kernel.org/oe-lkp/202606180805.1b2fdd03-lkp@intel.com



[   92.416502][    C0] WARNING: possible irq lock inversion dependency detected
[   92.417060][    C0] 7.1.0-rc4+ #1 Not tainted
[   92.417436][    C0] --------------------------------------------------------
[   92.418046][    C0] sed/219 just changed the state of lock:
[   92.418527][    C0] ffff8881bbb865d8 (&sighand->siglock){-...}-{3:3}, at: lock_task_sighand (signal.c:1379 (discriminator 1))
[   92.420518][    C0] but this lock took another, HARDIRQ-unsafe lock in the past:
[   92.421115][    C0]  (&lockref->lock){+.+.}-{3:3}
[   92.421123][    C0]
[   92.421123][    C0] and interrupts could create inverse lock ordering between them.
[   92.421123][    C0]
[   92.426274][    C0]
[   92.426274][    C0] other info that might help us debug this:
[   92.430176][    C0] Chain exists of:
[   92.430176][    C0]   &sighand->siglock --> &(&sig->stats_lock)->lock --> &lockref->lock
[   92.430176][    C0]
[   92.435925][    C0]  Possible interrupt unsafe locking scenario:
[   92.435925][    C0]
[   92.439638][    C0]        CPU0                    CPU1
[   92.441400][    C0]        ----                    ----
[   92.443137][    C0]   lock(&lockref->lock);
[   92.444756][    C0]                                local_irq_disable();
[   92.446587][    C0]                                lock(&sighand->siglock);
[   92.448366][    C0]                                lock(&(&sig->stats_lock)->lock);
[   92.450174][    C0]   <Interrupt>
[   92.451642][    C0]     lock(&sighand->siglock);
[   92.453200][    C0]
[   92.453200][    C0]  *** DEADLOCK ***
[   92.453200][    C0]
[   92.457265][    C0] 2 locks held by sed/219:
[   92.458724][    C0]  #0: ffffffffb322ad60 (rcu_read_lock){....}-{1:3}, at: kill_pid_info_type (linux/rcupdate.h:300 linux/rcupdate.h:838 signal.c:1455)
[   92.460612][    C0]  #1: ffffffffb322ad60 (rcu_read_lock){....}-{1:3}, at: lock_task_sighand (linux/rcupdate.h:300 linux/rcupdate.h:838 signal.c:1362)
[   92.462494][    C0]
[   92.462494][    C0] the shortest dependencies between 2nd lock and 1st lock:
[   92.465475][    C0]     -> (&lockref->lock){+.+.}-{3:3} {
[   92.467032][    C0]        HARDIRQ-ON-W at:
[   92.468491][    C0]                             __lock_acquire (locking/lockdep.c:5191)
[   92.470147][    C0]                             lock_acquire (trace/events/lock.h:24 (discriminator 15) trace/events/lock.h:24 (discriminator 15) locking/lockdep.c:5831 (discriminator 15))
[   92.471793][    C0]                             _raw_spin_lock (linux/spinlock_api_smp.h:158 (discriminator 1) locking/spinlock.c:158 (discriminator 1))
[   92.473420][    C0]                             d_instantiate (linux/spinlock.h:342 dcache.c:2084 dcache.c:2078)
[   92.475015][    C0]                             d_make_root (dcache.c:2126)
[   92.476597][    C0]                             shmem_fill_super (shmem.c:5103)
[   92.478192][    C0]                             get_tree_nodev (super.c:1266 super.c:1285)
[   92.479724][    C0]                             vfs_get_tree (super.c:1693)
[   92.481253][    C0]                             fc_mount (namespace.c:1198)
[   92.482730][    C0]                             vfs_kern_mount (namespace.c:6298)
[   92.484296][    C0]                             kern_mount (namespace.c:6289 namespace.c:6289)
[   92.485750][    C0]                             shmem_init (shmem.c:5420)
[   92.487245][    C0]                             mnt_init (namespace.c:6271)
[   92.488676][    C0]                             vfs_caches_init (dcache.c:3418)
[   92.490238][    C0]                             start_kernel (main.c:1202)
[   92.491707][    C0]                             __pfx_clear_bss (x86/kernel/head64.c:310)
[   92.493159][    C0]                             x86_64_start_kernel (x86/kernel/head64.c:291)
[   92.494609][    C0]                             common_startup_64 (x86/kernel/head_64.S:418)
[   92.496025][    C0]        SOFTIRQ-ON-W at:
[   92.497295][    C0]                             __lock_acquire (locking/lockdep.c:5191)
[   92.498764][    C0]                             lock_acquire (trace/events/lock.h:24 (discriminator 15) trace/events/lock.h:24 (discriminator 15) locking/lockdep.c:5831 (discriminator 15))
[   92.500198][    C0]                             _raw_spin_lock (linux/spinlock_api_smp.h:158 (discriminator 1) locking/spinlock.c:158 (discriminator 1))
[   92.501576][    C0]                             d_instantiate (linux/spinlock.h:342 dcache.c:2084 dcache.c:2078)
[   92.502953][    C0]                             d_make_root (dcache.c:2126)
[   92.504319][    C0]                             shmem_fill_super (shmem.c:5103)
[   92.505708][    C0]                             get_tree_nodev (super.c:1266 super.c:1285)
[   92.507160][    C0]                             vfs_get_tree (super.c:1693)
[   92.508507][    C0]                             fc_mount (namespace.c:1198)
[   92.509809][    C0]                             vfs_kern_mount (namespace.c:6298)
[   92.511231][    C0]                             kern_mount (namespace.c:6289 namespace.c:6289)
[   92.512525][    C0]                             shmem_init (shmem.c:5420)
[   92.513817][    C0]                             mnt_init (namespace.c:6271)
[   92.516019][    C0]                             vfs_caches_init (dcache.c:3418)
[   92.517541][    C0]                             start_kernel (main.c:1202)
[   92.519055][    C0]                             __pfx_clear_bss (x86/kernel/head64.c:310)
[   92.520442][    C0]                             x86_64_start_kernel (x86/kernel/head64.c:291)
[   92.521878][    C0]                             common_startup_64 (x86/kernel/head_64.S:418)
[   92.523342][    C0]        INITIAL USE at:
[   92.524518][    C0]                            __lock_acquire (locking/lockdep.c:5191)
[   92.525930][    C0]                            lock_acquire (trace/events/lock.h:24 (discriminator 15) trace/events/lock.h:24 (discriminator 15) locking/lockdep.c:5831 (discriminator 15))
[   92.527403][    C0]                            _raw_spin_lock (linux/spinlock_api_smp.h:158 (discriminator 1) locking/spinlock.c:158 (discriminator 1))
[   92.528797][    C0]                            d_instantiate (linux/spinlock.h:342 dcache.c:2084 dcache.c:2078)
[   92.530252][    C0]                            d_make_root (dcache.c:2126)
[   92.531629][    C0]                            shmem_fill_super (shmem.c:5103)
[   92.533035][    C0]                            get_tree_nodev (super.c:1266 super.c:1285)
[   92.534518][    C0]                            vfs_get_tree (super.c:1693)
[   92.535844][    C0]                            fc_mount (namespace.c:1198)
[   92.537152][    C0]                            vfs_kern_mount (namespace.c:6298)
[   92.538524][    C0]                            kern_mount (namespace.c:6289 namespace.c:6289)
[   92.539835][    C0]                            shmem_init (shmem.c:5420)
[   92.541165][    C0]                            mnt_init (namespace.c:6271)
[   92.542506][    C0]                            vfs_caches_init (dcache.c:3418)
[   92.543881][    C0]                            start_kernel (main.c:1202)
[   92.545279][    C0]                            __pfx_clear_bss (x86/kernel/head64.c:310)
[   92.546706][    C0]                            x86_64_start_kernel (x86/kernel/head64.c:291)
[   92.548218][    C0]                            common_startup_64 (x86/kernel/head_64.S:418)
[   92.549692][    C0]      }
[   92.550763][    C0]      ... key      at: __key.4+0x0/0x40
[   92.552113][    C0]      ... acquired at:
[   92.553212][    C0]    __lock_acquire (locking/lockdep.c:5237)
[   92.554371][    C0]    lock_acquire (trace/events/lock.h:24 (discriminator 15) trace/events/lock.h:24 (discriminator 15) locking/lockdep.c:5831 (discriminator 15))
[   92.555540][    C0]    _raw_spin_lock (linux/spinlock_api_smp.h:158 (discriminator 1) locking/spinlock.c:158 (discriminator 1))
[   92.556673][    C0]    lockref_get (linux/spinlock.h:342 lockref.c:50)
[   92.557781][    C0]    pidfs_alloc_file (linux/dcache.h:365 pidfs.c:1168)
[   92.558971][    C0]    pidfd_prepare (fork.c:1918)
[   92.560119][    C0]    __x64_sys_pidfd_open (pid.c:674 pid.c:710 pid.c:695 pid.c:695)
[   92.561296][    C0]    do_syscall_64 (x86/entry/syscall_64.c:63 x86/entry/syscall_64.c:94)
[   92.562456][    C0]    entry_SYSCALL_64_after_hwframe (x86/entry/entry_64.S:121)
[   92.563689][    C0]
[   92.564649][    C0]    -> (&pid->wait_pidfd){....}-{3:3} {
[   92.565868][    C0]       INITIAL USE at:
[   92.566983][    C0]                          __lock_acquire (locking/lockdep.c:5191)
[   92.568286][    C0]                          lock_acquire (trace/events/lock.h:24 (discriminator 15) trace/events/lock.h:24 (discriminator 15) locking/lockdep.c:5831 (discriminator 15))
[   92.569603][    C0]                          _raw_spin_lock_irqsave (linux/spinlock_api_smp.h:132 (discriminator 1) locking/spinlock.c:166 (discriminator 1))
[   92.570965][    C0]                          __wake_up (sched/wait.c:124 (discriminator 1) sched/wait.c:146 (discriminator 1))
[   92.572231][    C0]                          do_notify_parent (signal.c:2156 signal.c:2184)
[   92.573541][    C0]                          exit_notify (exit.c:757)
[   92.574834][    C0]                          do_exit (exit.c:987)
[   92.576106][    C0]                          kthread (kthread.c:438)
[   92.577494][    C0]                          ret_from_fork (x86/kernel/process.c:158)
[   92.578795][    C0]                          ret_from_fork_asm (x86/entry/entry_64.S:245)
[   92.580104][    C0]     }
[   92.581115][    C0]     ... key      at: __key.3+0x0/0x40
[   92.582473][    C0]     ... acquired at:
[   92.583582][    C0]    __lock_acquire (locking/lockdep.c:5237)
[   92.584748][    C0]    lock_acquire (trace/events/lock.h:24 (discriminator 15) trace/events/lock.h:24 (discriminator 15) locking/lockdep.c:5831 (discriminator 15))
[   92.585949][    C0]    _raw_spin_lock_irqsave (linux/spinlock_api_smp.h:132 (discriminator 1) locking/spinlock.c:166 (discriminator 1))
[   92.587170][    C0]    __wake_up (sched/wait.c:124 (discriminator 1) sched/wait.c:146 (discriminator 1))
[   92.588284][    C0]    __exit_signal (exit.c:142 exit.c:212)
[   92.589434][    C0]    release_task (exit.c:265)
[   92.590586][    C0]    exit_notify (exit.c:776)
[   92.591725][    C0]    do_exit (exit.c:987)
[   92.592834][    C0]    kthread (kthread.c:438)
[   92.593966][    C0]    ret_from_fork (x86/kernel/process.c:158)
[   92.595127][    C0]    ret_from_fork_asm (x86/entry/entry_64.S:245)
[   92.596277][    C0]
[   92.597241][    C0]   -> (&____s->seqcount#3){....}-{0:0} {
[   92.598469][    C0]      INITIAL USE at:
[   92.599564][    C0]                        __lock_acquire (locking/lockdep.c:5191)
[   92.600850][    C0]                        lock_acquire (trace/events/lock.h:24 (discriminator 15) trace/events/lock.h:24 (discriminator 15) locking/lockdep.c:5831 (discriminator 15))
[   92.602201][    C0]                        __exit_signal (linux/seqlock.h:478 (discriminator 1) linux/seqlock.h:504 (discriminator 1) linux/seqlock.h:881 (discriminator 1) exit.c:199 (discriminator 1))
[   92.603491][    C0]                        release_task (exit.c:265)
[   92.604770][    C0]                        exit_notify (exit.c:776)
[   92.606066][    C0]                        do_exit (exit.c:987)
[   92.607334][    C0]                        kthread (kthread.c:438)
[   92.608581][    C0]                        ret_from_fork (x86/kernel/process.c:158)
[   92.609873][    C0]                        ret_from_fork_asm (x86/entry/entry_64.S:245)
[   92.611166][    C0]      INITIAL READ USE at:
[   92.612286][    C0]                             __lock_acquire (locking/lockdep.c:5191)
[   92.613596][    C0]                             lock_acquire (trace/events/lock.h:24 (discriminator 15) trace/events/lock.h:24 (discriminator 15) locking/lockdep.c:5831 (discriminator 15))
[   92.615780][    C0]                             thread_group_cputime (linux/seqlock.h:73 (discriminator 1) linux/seqlock.h:838 (discriminator 1) sched/cputime.c:345 (discriminator 1))
[   92.617425][    C0]                             thread_group_cputime_adjusted (sched/cputime.c:644)
[   92.619121][    C0]                             wait_task_zombie (exit.c:1234)
[   92.620533][    C0]                             __do_wait (exit.c:1646 exit.c:1681)
[   92.621885][    C0]                             do_wait (exit.c:1722)
[   92.623341][    C0]                             kernel_wait (exit.c:1898)


The kernel config and materials to reproduce are available at:
https://download.01.org/0day-ci/archive/20260618/202606180805.1b2fdd03-lkp@intel.com



-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki


             reply	other threads:[~2026-06-18  6:36 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-06-18  6:36 kernel test robot [this message]
  -- strict thread matches above, loose matches on Subject: below --
2026-06-12 11:05 [PATCH] pidfs: pin stashed dentry for pid lifetime to fix repeat-open regression A. Sterling
2026-06-17 13:13 ` Christian Brauner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202606180805.1b2fdd03-lkp@intel.com \
    --to=oliver.sang@intel.com \
    --cc=adam.sterling@gmail.com \
    --cc=brauner@kernel.org \
    --cc=jack@suse.cz \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lkp@intel.com \
    --cc=oe-lkp@lists.linux.dev \
    --cc=viro@zeniv.linux.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.