2026年10月20日 21:03, "Tao Cui" <[email protected] 
mailto:[email protected]?to=%22Tao%20Cui%22%20%3Ccui.tao%40linux.dev%3E > 写到:


> 
> Hi Jackie,
> 
> 在 2026/10/19 16:42, Jackie Liu 写道:
> 
> > 
> > Commit 8b428f42f3ed ("nbd: fix lockdep deadlock warning") drops
> >  config_lock around blk_mq_update_nr_hw_queues(). The initial checks for a
> >  running device and NBD_FLAG_CAN_MULTI_CONN can become stale while the
> >  lock is dropped.
> >  
> >  Two NBD_DO_IT callers can both pass the PID check. After the first caller
> >  starts the device, the loser overwrites nbd->pid before failing to create
> >  the existing sysfs pid attribute. Concurrent NBD_SET_SOCK or NBD_SET_FLAGS
> >  can also leave multiple connections without NBD_FLAG_CAN_MULTI_CONN,
> >  which the queue-count retry does not validate.
> >  
> >  Recheck both conditions after reacquiring config_lock. Reject an already
> >  started device with EBUSY, and reject unsupported multiple connections
> >  with EINVAL before retrying the queue update or starting receive workers.
> >  
> >  Each fix is followed by its regression test. The tests prime the hardware
> >  queue count before each attempt and use socket pairs, so no external NBD
> >  server is needed. They require CAP_SYS_ADMIN, at least two online CPUs
> >  and unused NBD devices.
> > 
> Tested this series on top of next-20261019 (x86_64 KVM guest, 8 vCPUs),
> building and running the new selftests in-guest with nbd loaded as a
> module (nbds_max=4 max_part=0).
> 
> On the unpatched kernel both bugs reproduce at round 1: the losing
> NBD_DO_IT caller exits with errno=17 (EEXIST) and /sys/block/nbdX/pid
> reports the loser's pid, and nbd_multi_conn flags both the socket-added
> and flags-changed variants ("invalid second receiver").
> 
> With the series applied, nbd_pid_race and nbd_multi_conn pass 100
> rounds per case with seeds 123 and 456 - every round rejected with
> EBUSY/EINVAL, no regressions, dmesg clean.
> 
> Tested-by: Tao Cui <[email protected]>

Thanks for test.

-- 
Jackie Liu

> 
> Thanks,
> Tao
>

Reply via email to