> -----Original Message----- > From: Alan Stern [mailto:stern@xxxxxxxxxxxxxxxxxxx] > Sent: Thursday, August 19, 2010 4:32 AM > To: Sarah Sharp > Cc: Xu, Andiry; linux-usb@xxxxxxxxxxxxxxx; gregkh@xxxxxxx > Subject: Re: [PATCH 1/2] xHCI: change xhci_reset_device() to allocate new > device > > On Wed, 18 Aug 2010, Sarah Sharp wrote: > > > > There might be a problem if slot IDs get reused when you start > reviving > > > the devices under a controller that has been reset. The udev->slot_id > > > value might point to another device's structure. > > > xhci_discover_or_reset_device will have to check and make sure that > the > > > slot really does match the device. > > > > Would it be possible when the failed resume is detected to go through > > the list of usb_devices that the xHCI driver has slots for, and change > > the slot_id to -1? That would indicate the struct usb_device is valid, > > but there is no slot for it. > > > > The slot_id field in struct usb_device is an int, although there are a > > lot of places it's cast to a unsigned integer. Those places would have > > to be looked at, but I suspect that xhci_check_args() would be the only > > place that would need to be changed. Then the new > > xhci_discover_or_reset_device() would need to check udev->slot_id for -1 > > instead of checking whether xhci->devs[slot_id] is non-null. > > Sure, you could do that if you wanted. But IMO it would be easier to > store a pointer back to the usb_device in the slot structure, and have > xhci_discover_or_reset_device check that the pointer points to the > right device. > I think it's a good idea. And I think xhci_free_dev() should also check this, in order to avoid freeing the wrong device. Thanks, Andiry -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html