Re: [PATCHv2 1/1] SCSI: update hosts module to use idr index management

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

 



On Tue, 2015-10-06 at 10:14 -0700, Lee Duncan wrote:
> On 10/06/2015 02:40 AM, Christoph Hellwig wrote:
> >>  struct Scsi_Host *scsi_host_lookup(unsigned short hostnum)
> >>  {
> >> -	struct device *cdev;
> >> -	struct Scsi_Host *shost = NULL;
> >> -
> >> -	cdev = class_find_device(&shost_class, NULL, &hostnum,
> >> -				 __scsi_host_match);
> >> -	if (cdev) {
> >> -		shost = scsi_host_get(class_to_shost(cdev));
> >> -		put_device(cdev);
> >> -	}
> >> +	struct Scsi_Host *shost;
> >> +
> >> +	spin_lock(&host_index_lock);
> >> +	shost = idr_find(&host_index_idr, hostnum);
> >> +	spin_unlock(&host_index_lock);
> >> +
> >>  	return shost;
> > 
> > How does this actually grab a reference to the host?
> 
> Good catch -- I should have noticed that.
> 
> I will resubmit the patch.

I'll wait to see what you produce, but I don't think, using a separate
idr array, you can close the race window between lookup and get.  One of
the nice things about using the cdev iterator is that the get is part of
the lookup process.

James


--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[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