--- linux/drivers/usb/usb.c-orig	Tue May  8 09:21:51 2001
+++ linux/drivers/usb/usb.c	Sat May 19 11:42:24 2001
@@ -1013,7 +1013,7 @@
 /*-------------------------------------------------------------------*/
 int usb_submit_urb(urb_t *urb)
 {
-	if (urb && urb->dev)
+	if (urb && urb->dev && urb->dev->bus)
 		return urb->dev->bus->op->submit_urb(urb);
 	else
 		return -ENODEV;
@@ -1022,7 +1022,7 @@
 /*-------------------------------------------------------------------*/
 int usb_unlink_urb(urb_t *urb)
 {
-	if (urb && urb->dev)
+	if (urb && urb->dev && urb->dev->bus)
 		return urb->dev->bus->op->unlink_urb(urb);
 	else
 		return -ENODEV;
--- linux/drivers/usb/usb-ohci.c-orig	Sat May 19 11:37:50 2001
+++ linux/drivers/usb/usb-ohci.c	Sat May 19 11:38:31 2001
@@ -872,6 +872,7 @@
 	/* free device, and associated EDs */
 	dev_free (ohci, dev);
 
+	dev->bus = 0;
 	return 0;
 }
 
--- linux/drivers/usb/usb-uhci.c-orig	Sat May 19 11:37:00 2001
+++ linux/drivers/usb/usb-uhci.c	Sat May 19 11:38:43 2001
@@ -2224,6 +2224,7 @@
 	s=(uhci_t*) usb_dev->bus->hcpriv;	
 	uhci_unlink_urbs(s, usb_dev, 0);
 
+	dev->bus = 0;
 	return 0;
 }
 
--- linux/drivers/usb/uhci.c-orig	Sat May 19 11:36:49 2001
+++ linux/drivers/usb/uhci.c	Sat May 19 11:38:20 2001
@@ -144,6 +144,7 @@
 		uhci_unlink_urb(urb);
 	}
 
+	dev->bus = 0;
 	return 0;
 }
 
