Re: [PATCH v3 2/6] nbd: disallow NBD_SET_SOCK on an active device

yangerkun <[email protected]>
Newsgroups org.kernel.vger.linux-block
Message-ID <[email protected]>

在 2026/7/22 11:03, yu kuai 写道:
> Hi,
> 
> 在 2026/7/13 14:56, Yang Erkun 写道:
>> We cannot add a socket to an already running nbd device, the reconfigure
>> for netlink can only active dead socket. But for ioctl path, we can call
>> NBD_SET_SOCK after NBD_DO_IT, reject this using nbd->pid which has been
>> setted when NBD_DO_IT. Besides, it is the root cause for commit
>> b98e762e3d71 ("nbd: freeze the queue while we're adding connections").
>>
>> Signed-off-by: Yang Erkun <[email protected]>
>> ---
>>    drivers/block/nbd.c | 7 +++++++
>>    1 file changed, 7 insertions(+)
>>
>> diff --git a/drivers/block/nbd.c b/drivers/block/nbd.c
>> index b1a5acd57426..a15553ab4b97 100644
>> --- a/drivers/block/nbd.c
>> +++ b/drivers/block/nbd.c
>> @@ -1302,6 +1302,13 @@ static int nbd_add_socket(struct nbd_device *nbd, unsigned long arg,
>>    		goto put_socket;
>>    	}
>>    
>> +	if (nbd->pid) {
>> +		dev_err(disk_to_dev(nbd->disk),
>> +			"Cannot add socket to a running device\n");
>> +		err = -EBUSY;
>> +		goto put_socket;
>> +	}
> 
> I think the checking if fine, but I'd like to add the checking before nbd_get_socket() and
> return -EBUSY directly.

OK.
> 
>> +
>>    	nsock = kzalloc_obj(*nsock);
>>    	if (!nsock) {
>>    		err = -ENOMEM;
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.