vserver 1.9.3
[linux-2.6.git] / drivers / usb / class / usblp.c
index b6da400..da91bbd 100644 (file)
@@ -221,7 +221,7 @@ static int usblp_set_protocol(struct usblp *usblp, int protocol);
 static int usblp_cache_device_id_string(struct usblp *usblp);
 
 /* forward reference to make our lives easier */
-extern struct usb_driver usblp_driver;
+static struct usb_driver usblp_driver;
 
 /*
  * Functions for usblp control messages.
@@ -397,10 +397,6 @@ static void usblp_cleanup (struct usblp *usblp)
 {
        info("usblp%d: removed", usblp->minor);
 
-       usb_buffer_free (usblp->dev, USBLP_BUF_SIZE,
-                       usblp->writebuf, usblp->writeurb->transfer_dma);
-       usb_buffer_free (usblp->dev, USBLP_BUF_SIZE,
-                       usblp->readbuf, usblp->readurb->transfer_dma);
        kfree (usblp->device_id_string);
        kfree (usblp->statusbuf);
        usb_free_urb(usblp->writeurb);
@@ -1129,7 +1125,7 @@ static int usblp_cache_device_id_string(struct usblp *usblp)
        /* First two bytes are length in big-endian.
         * They count themselves, and we copy them into
         * the user's buffer. */
-       length = be16_to_cpu(*((u16 *)usblp->device_id_string));
+       length = be16_to_cpu(*((__be16 *)usblp->device_id_string));
        if (length < 2)
                length = 2;
        else if (length >= USBLP_DEVICE_ID_SIZE)
@@ -1159,6 +1155,10 @@ static void usblp_disconnect(struct usb_interface *intf)
        usb_set_intfdata (intf, NULL);
 
        usblp_unlink_urbs(usblp);
+       usb_buffer_free (usblp->dev, USBLP_BUF_SIZE,
+                       usblp->writebuf, usblp->writeurb->transfer_dma);
+       usb_buffer_free (usblp->dev, USBLP_BUF_SIZE,
+                       usblp->readbuf, usblp->readurb->transfer_dma);
 
        if (!usblp->used)
                usblp_cleanup (usblp);
@@ -1208,6 +1208,6 @@ module_exit(usblp_exit);
 
 MODULE_AUTHOR( DRIVER_AUTHOR );
 MODULE_DESCRIPTION( DRIVER_DESC );
-MODULE_PARM(proto_bias, "i");
+module_param(proto_bias, int, S_IRUGO | S_IWUSR);
 MODULE_PARM_DESC(proto_bias, "Favourite protocol number");
 MODULE_LICENSE("GPL");