@@ -745,6 +745,7 @@ static int vhci_urb_enqueue(struct usb_hcd *hcd, struct urb *urb, gfp_t mem_flag
745
745
*
746
746
*/
747
747
if (usb_pipedevice (urb -> pipe ) == 0 ) {
748
+ struct usb_device * old ;
748
749
__u8 type = usb_pipetype (urb -> pipe );
749
750
struct usb_ctrlrequest * ctrlreq =
750
751
(struct usb_ctrlrequest * ) urb -> setup_packet ;
@@ -755,14 +756,15 @@ static int vhci_urb_enqueue(struct usb_hcd *hcd, struct urb *urb, gfp_t mem_flag
755
756
goto no_need_xmit ;
756
757
}
757
758
759
+ old = vdev -> udev ;
758
760
switch (ctrlreq -> bRequest ) {
759
761
case USB_REQ_SET_ADDRESS :
760
762
/* set_address may come when a device is reset */
761
763
dev_info (dev , "SetAddress Request (%d) to port %d\n" ,
762
764
ctrlreq -> wValue , vdev -> rhport );
763
765
764
- usb_put_dev (vdev -> udev );
765
766
vdev -> udev = usb_get_dev (urb -> dev );
767
+ usb_put_dev (old );
766
768
767
769
spin_lock (& vdev -> ud .lock );
768
770
vdev -> ud .status = VDEV_ST_USED ;
@@ -781,8 +783,8 @@ static int vhci_urb_enqueue(struct usb_hcd *hcd, struct urb *urb, gfp_t mem_flag
781
783
usbip_dbg_vhci_hc (
782
784
"Not yet?:Get_Descriptor to device 0 (get max pipe size)\n" );
783
785
784
- usb_put_dev (vdev -> udev );
785
786
vdev -> udev = usb_get_dev (urb -> dev );
787
+ usb_put_dev (old );
786
788
goto out ;
787
789
788
790
default :
@@ -1067,15 +1069,16 @@ static void vhci_shutdown_connection(struct usbip_device *ud)
1067
1069
static void vhci_device_reset (struct usbip_device * ud )
1068
1070
{
1069
1071
struct vhci_device * vdev = container_of (ud , struct vhci_device , ud );
1072
+ struct usb_device * old = vdev -> udev ;
1070
1073
unsigned long flags ;
1071
1074
1072
1075
spin_lock_irqsave (& ud -> lock , flags );
1073
1076
1074
1077
vdev -> speed = 0 ;
1075
1078
vdev -> devid = 0 ;
1076
1079
1077
- usb_put_dev (vdev -> udev );
1078
1080
vdev -> udev = NULL ;
1081
+ usb_put_dev (old );
1079
1082
1080
1083
if (ud -> tcp_socket ) {
1081
1084
sockfd_put (ud -> tcp_socket );
0 commit comments