Message ID | 20240625164607.3367-1-sensor1010@163.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | USB: hub:no need to obtain usb device | expand |
On Tue, Jun 25, 2024 at 09:46:07AM -0700, Lizhe wrote: > the usb device connected to the port has obtained. > there is no need to obtain it again. > > Signed-off-by: Lizhe <sensor1010@163.com> > --- > drivers/usb/core/hub.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c > index 4b93c0bd1d4b..f37b991fa86a 100644 > --- a/drivers/usb/core/hub.c > +++ b/drivers/usb/core/hub.c > @@ -5358,7 +5358,7 @@ static void hub_port_connect(struct usb_hub *hub, int port1, u16 portstatus, > if (udev) { > if (hcd->usb_phy && !hdev->parent) > usb_phy_notify_disconnect(hcd->usb_phy, udev->speed); > - usb_disconnect(&port_dev->child); > + usb_disconnect(&udev); > } This is wrong. We need to pass the address of port_dev->child, not the address of udev. This is so that usb_disconnect() can set port_dev->child to NULL. Setting udev to NULL instead won't work right. Alan Stern
On Tue, Jun 25, 2024 at 09:46:07AM -0700, Lizhe wrote: > the usb device connected to the port has obtained. > there is no need to obtain it again. > > Signed-off-by: Lizhe <sensor1010@163.com> > --- > drivers/usb/core/hub.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c > index 4b93c0bd1d4b..f37b991fa86a 100644 > --- a/drivers/usb/core/hub.c > +++ b/drivers/usb/core/hub.c > @@ -5358,7 +5358,7 @@ static void hub_port_connect(struct usb_hub *hub, int port1, u16 portstatus, > if (udev) { > if (hcd->usb_phy && !hdev->parent) > usb_phy_notify_disconnect(hcd->usb_phy, udev->speed); > - usb_disconnect(&port_dev->child); > + usb_disconnect(&udev); How was this tested?
diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c index 4b93c0bd1d4b..f37b991fa86a 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c @@ -5358,7 +5358,7 @@ static void hub_port_connect(struct usb_hub *hub, int port1, u16 portstatus, if (udev) { if (hcd->usb_phy && !hdev->parent) usb_phy_notify_disconnect(hcd->usb_phy, udev->speed); - usb_disconnect(&port_dev->child); + usb_disconnect(&udev); } /* We can forget about a "removed" device when there's a physical
the usb device connected to the port has obtained. there is no need to obtain it again. Signed-off-by: Lizhe <sensor1010@163.com> --- drivers/usb/core/hub.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)