Hrm... doesn't this all fall to pot when the device is unplugged and repluged?
Matt On Wed, Jan 15, 2003 at 03:27:00PM -0800, Greg KH wrote: > ChangeSet 1.879.76.2, 2003/01/13 17:31:46-08:00, [EMAIL PROTECTED] > > [PATCH] USB: put the usb storage's SCSI device in the proper place in sysfs. > > Also makes usb_ifnum_to_if() a public function > > > diff -Nru a/drivers/usb/core/hcd.h b/drivers/usb/core/hcd.h > --- a/drivers/usb/core/hcd.h Wed Jan 15 14:59:52 2003 > +++ b/drivers/usb/core/hcd.h Wed Jan 15 14:59:52 2003 > @@ -353,9 +353,6 @@ > extern void usb_bus_get (struct usb_bus *bus); > extern void usb_bus_put (struct usb_bus *bus); > > -extern struct usb_interface *usb_ifnum_to_if (struct usb_device *dev, > - unsigned ifnum); > - > extern int usb_find_interface_driver (struct usb_device *dev, > struct usb_interface *interface); > > diff -Nru a/drivers/usb/core/usb.c b/drivers/usb/core/usb.c > --- a/drivers/usb/core/usb.c Wed Jan 15 14:59:52 2003 > +++ b/drivers/usb/core/usb.c Wed Jan 15 14:59:52 2003 > @@ -1484,6 +1484,7 @@ > EXPORT_SYMBOL(usb_driver_release_interface); > EXPORT_SYMBOL(usb_match_id); > EXPORT_SYMBOL(usb_find_interface); > +EXPORT_SYMBOL(usb_ifnum_to_if); > > EXPORT_SYMBOL(usb_new_device); > EXPORT_SYMBOL(usb_reset_device); > diff -Nru a/drivers/usb/storage/scsiglue.c b/drivers/usb/storage/scsiglue.c > --- a/drivers/usb/storage/scsiglue.c Wed Jan 15 14:59:52 2003 > +++ b/drivers/usb/storage/scsiglue.c Wed Jan 15 14:59:52 2003 > @@ -88,9 +88,12 @@ > /* register the host */ > us->host = scsi_register(sht, sizeof(us)); > if (us->host) { > + struct usb_interface *iface; > us->host->hostdata[0] = (unsigned long)us; > us->host_no = us->host->host_no; > - scsi_set_device(us->host, &us->pusb_dev->dev); > + iface = usb_ifnum_to_if(us->pusb_dev, us->ifnum); > + if (iface) > + scsi_set_device(us->host, &iface->dev); > return 1; > } > > diff -Nru a/include/linux/usb.h b/include/linux/usb.h > --- a/include/linux/usb.h Wed Jan 15 14:59:52 2003 > +++ b/include/linux/usb.h Wed Jan 15 14:59:52 2003 > @@ -277,7 +277,9 @@ > const struct usb_device_id *usb_match_id(struct usb_interface *interface, > const struct usb_device_id *id); > > -struct usb_interface *usb_find_interface(struct usb_driver *drv, kdev_t kdev); > +extern struct usb_interface *usb_find_interface(struct usb_driver *drv, kdev_t >kdev); > +extern struct usb_interface *usb_ifnum_to_if(struct usb_device *dev, unsigned >ifnum); > + > > /** > * usb_make_path - returns stable device path in the usb tree > > > > ------------------------------------------------------- > This SF.NET email is sponsored by: A Thawte Code Signing Certificate > is essential in establishing user confidence by providing assurance of > authenticity and code integrity. Download our Free Code Signing guide: > http://ads.sourceforge.net/cgi-bin/redirect.pl?thaw0028en > _______________________________________________ > [EMAIL PROTECTED] > To unsubscribe, use the last form field at: > https://lists.sourceforge.net/lists/listinfo/linux-usb-devel -- Matthew Dharm Home: [EMAIL PROTECTED] Maintainer, Linux USB Mass Storage Driver Way to go, lava boy. -- Stef to Greg User Friendly, 3/26/1998
msg10773/pgp00000.pgp
Description: PGP signature