Hi Shyam, Shyam Prasad N <nspmangalore@xxxxxxxxx> writes: > On Wed, Nov 1, 2023 at 7:42 PM Paulo Alcantara <pc@xxxxxxxxxxxxx> wrote: >> >> Paulo Alcantara <pc@xxxxxxxxxxxxx> writes: >> >> >> @@ -515,7 +573,18 @@ static int cifs_debug_data_proc_show(struct seq_file *m, void *v) >> >> seq_printf(m, "\n\n\tExtra Channels: %zu ", >> >> ses->chan_count-1); >> >> for (j = 1; j < ses->chan_count; j++) { >> >> + /* >> >> + * kernel_getsockname can block inside >> >> + * cifs_dump_channel. so drop the lock first >> >> + */ >> >> + server->srv_count++; >> >> + spin_unlock(&cifs_tcp_ses_lock); >> >> + >> >> cifs_dump_channel(m, j, &ses->chans[j]); >> >> + >> >> + cifs_put_tcp_session(server, 0); >> >> + spin_lock(&cifs_tcp_ses_lock); >> > >> > Here you are re-acquiring @cifs_tcp_ses_lock spinlock under >> > @ses->chan_lock, which will introduce deadlocks in threads calling >> > cifs_match_super(), cifs_signal_cifsd_for_reconnect(), >> > cifs_mark_tcp_ses_conns_for_reconnect(), cifs_find_smb_ses(), ... >> > > Good points. > I'm just wondering why I'm unable to repro the same though. > I have lockdep enabled on my kernel too. But the same steps do not > throw this warning. That's weird as I can always reproduce it when mounting a Windows Server 2022 share with 'username=foo,password=bar,multichannel' options followed by `cat /proc/fs/cifs/DebugData`. Here is the relevant part of my .config # # Lock Debugging (spinlocks, mutexes, etc...) # CONFIG_LOCK_DEBUGGING_SUPPORT=y CONFIG_PROVE_LOCKING=y # CONFIG_PROVE_RAW_LOCK_NESTING is not set CONFIG_LOCK_STAT=y CONFIG_DEBUG_RT_MUTEXES=y CONFIG_DEBUG_SPINLOCK=y CONFIG_DEBUG_MUTEXES=y CONFIG_DEBUG_WW_MUTEX_SLOWPATH=y CONFIG_DEBUG_RWSEMS=y CONFIG_DEBUG_LOCK_ALLOC=y CONFIG_LOCKDEP=y CONFIG_LOCKDEP_BITS=15 CONFIG_LOCKDEP_CHAINS_BITS=16 CONFIG_LOCKDEP_STACK_TRACE_BITS=19 CONFIG_LOCKDEP_STACK_TRACE_HASH_BITS=14 CONFIG_LOCKDEP_CIRCULAR_QUEUE_BITS=12 # CONFIG_DEBUG_LOCKDEP is not set CONFIG_DEBUG_ATOMIC_SLEEP=y # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set # CONFIG_LOCK_TORTURE_TEST is not set # CONFIG_WW_MUTEX_SELFTEST is not set # CONFIG_SCF_TORTURE_TEST is not set # CONFIG_CSD_LOCK_WAIT_DEBUG is not set # end of Lock Debugging (spinlocks, mutexes, etc...)