|
@@ -163,8 +163,10 @@ static inline char *portspeed(int portstatus)
|
|
|
}
|
|
|
|
|
|
/* Note that hdev or one of its children must be locked! */
|
|
|
-static inline struct usb_hub *hdev_to_hub(struct usb_device *hdev)
|
|
|
+static struct usb_hub *hdev_to_hub(struct usb_device *hdev)
|
|
|
{
|
|
|
+ if (!hdev || !hdev->actconfig)
|
|
|
+ return NULL;
|
|
|
return usb_get_intfdata(hdev->actconfig->interface[0]);
|
|
|
}
|
|
|
|
|
@@ -385,8 +387,10 @@ static void kick_khubd(struct usb_hub *hub)
|
|
|
|
|
|
void usb_kick_khubd(struct usb_device *hdev)
|
|
|
{
|
|
|
- /* FIXME: What if hdev isn't bound to the hub driver? */
|
|
|
- kick_khubd(hdev_to_hub(hdev));
|
|
|
+ struct usb_hub *hub = hdev_to_hub(hdev);
|
|
|
+
|
|
|
+ if (hub)
|
|
|
+ kick_khubd(hub);
|
|
|
}
|
|
|
|
|
|
|