Re: [PATCH v4 2/4] scsi: core: Make sure that hosts outlive targets

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 7/14/22 11:02 AM, Mike Christie wrote:
> On 7/12/22 5:19 PM, Bart Van Assche wrote:
>> From: Ming Lei <ming.lei@xxxxxxxxxx>
>>
>> Fix the race conditions between SCSI LLD kernel module unloading and SCSI
>> device and target removal by making sure that SCSI hosts are destroyed after
>> all associated target and device objects have been freed.
>>
>> Cc: Christoph Hellwig <hch@xxxxxx>
>> Cc: Ming Lei <ming.lei@xxxxxxxxxx>
>> Cc: Mike Christie <michael.christie@xxxxxxxxxx>
>> Cc: Hannes Reinecke <hare@xxxxxxx>
>> Cc: John Garry <john.garry@xxxxxxxxxx>
>> Signed-off-by: Ming Lei <ming.lei@xxxxxxxxxx>
>> Signed-off-by: Bart Van Assche <bvanassche@xxxxxxx>
>> [ bvanassche: Reworked Ming's patch and split it ]
>> ---
>>  drivers/scsi/hosts.c     | 8 ++++++++
>>  drivers/scsi/scsi_scan.c | 7 +++++++
>>  include/scsi/scsi_host.h | 3 +++
>>  3 files changed, 18 insertions(+)
>>
>> diff --git a/drivers/scsi/hosts.c b/drivers/scsi/hosts.c
>> index ef6c0e37acce..8fa98c8d0ee0 100644
>> --- a/drivers/scsi/hosts.c
>> +++ b/drivers/scsi/hosts.c
>> @@ -190,6 +190,13 @@ void scsi_remove_host(struct Scsi_Host *shost)
>>  	transport_unregister_device(&shost->shost_gendev);
>>  	device_unregister(&shost->shost_dev);
>>  	device_del(&shost->shost_gendev);
>> +
>> +	/*
>> +	 * After scsi_remove_host() has returned the scsi LLD module can be
>> +	 * unloaded and/or the host resources can be released. Hence wait until
>> +	 * the dependent SCSI targets and devices are gone before returning.
>> +	 */
>> +	wait_event(shost->targets_wq, atomic_read(&shost->target_count) == 0);
>>  }
> 
> If we only wait here we can still hit the race I described right?
> 

Sorry Bart. Ignore this mail. I missed patch 1/4. I see we do the wait in
__scsi_remove_target.




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]

  Powered by Linux