> > diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c index > > 97a0f8faea6e..b4fbbeae1927 100644 > > --- a/drivers/usb/core/hub.c > > +++ b/drivers/usb/core/hub.c > > @@ -614,6 +614,19 @@ static int hub_ext_port_status(struct usb_hub *hub, > int port1, int type, > > ret = 0; > > } > > mutex_unlock(&hub->status_mutex); > > + > > + if (!ret) { > > + struct usb_device *hdev = hub->hdev; > > + > > + if (hdev && !hdev->parent) { > > How can you have a device without a parent? And why does it matter? If the hub is a root hub, the parent of hub will be NULL. And we only send the port status to phy driver for root hub. > > And how could hdev be NULL? And if it can change to be NULL, what prevents > it from changing right after you checked for it? > It is right. hdev is never NULL, this is a redundant check. Thanks, Stanley