[PATCH] fix usb_devfs_handle abuse

From: Christoph Hellwig (hch@lst.de)
Date: Sat Mar 22 2003 - 12:40:25 EST


The following patches are in preparation of making the first argument
of devfs_register always NULL.

Many usb drivers use the usb_devfs_handle variable instead of just
adding the usb/ prefix directly to their devfs_register calls. Fix
that and make usb_devfs_handle static and unexported.

diff -Nru a/drivers/usb/class/usblp.c b/drivers/usb/class/usblp.c
--- a/drivers/usb/class/usblp.c Sat Mar 22 17:02:37 2003
+++ b/drivers/usb/class/usblp.c Sat Mar 22 17:02:37 2003
@@ -186,8 +186,6 @@
 }
 #endif
 
-extern devfs_handle_t usb_devfs_handle; /* /dev/usb dir. */
-
 /* Quirks: various printer quirks are handled by this table & its flags. */
 
 struct quirk_printer_struct {
@@ -820,7 +818,7 @@
         struct usblp *usblp = 0;
         int protocol;
         int retval;
- char name[6];
+ char name[10];
 
         /* Malloc and start initializing usblp structure so we can use it
          * directly. */
@@ -909,8 +907,8 @@
 #endif
 
         /* If we have devfs, create with perms=660. */
- sprintf(name, "lp%d", usblp->minor);
- usblp->devfs = devfs_register(usb_devfs_handle, name,
+ sprintf(name, "usb/lp%d", usblp->minor);
+ usblp->devfs = devfs_register(NULL, name,
                                       DEVFS_FL_DEFAULT, USB_MAJOR,
                                       usblp->minor,
                                       S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP |
diff -Nru a/drivers/usb/core/file.c b/drivers/usb/core/file.c
--- a/drivers/usb/core/file.c Sat Mar 22 17:02:37 2003
+++ b/drivers/usb/core/file.c Sat Mar 22 17:02:37 2003
@@ -28,8 +28,7 @@
 #endif
 #include <linux/usb.h>
 
-devfs_handle_t usb_devfs_handle; /* /dev/usb dir. */
-EXPORT_SYMBOL(usb_devfs_handle);
+static devfs_handle_t usb_devfs_handle; /* /dev/usb dir. */
 
 #define MAX_USB_MINORS 256
 static struct file_operations *usb_minors[MAX_USB_MINORS];
diff -Nru a/drivers/usb/image/scanner.c b/drivers/usb/image/scanner.c
--- a/drivers/usb/image/scanner.c Sat Mar 22 17:02:37 2003
+++ b/drivers/usb/image/scanner.c Sat Mar 22 17:02:37 2003
@@ -878,7 +878,7 @@
 
         char valid_device = 0;
         char have_bulk_in, have_bulk_out, have_intr;
- char name[10];
+ char name[14];
 
         dbg("probe_scanner: USB dev address:%p", dev);
 
@@ -1099,9 +1099,9 @@
         scn->scn_minor = scn_minor;
         scn->isopen = 0;
 
- sprintf(name, "scanner%d", scn->scn_minor - SCN_BASE_MNR);
+ sprintf(name, "usb/scanner%d", scn->scn_minor - SCN_BASE_MNR);
         
- scn->devfs = devfs_register(usb_devfs_handle, name,
+ scn->devfs = devfs_register(NULL, name,
                                     DEVFS_FL_DEFAULT, USB_MAJOR,
                                     scn->scn_minor,
                                     S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP |
diff -Nru a/drivers/usb/image/scanner.h b/drivers/usb/image/scanner.h
--- a/drivers/usb/image/scanner.h Sat Mar 22 17:02:37 2003
+++ b/drivers/usb/image/scanner.h Sat Mar 22 17:02:37 2003
@@ -352,6 +352,4 @@
 };
 #define to_scanner(d) container_of(d, struct scn_usb_data, kobj)
 
-extern devfs_handle_t usb_devfs_handle;
-
 static struct usb_driver scanner_driver;
diff -Nru a/drivers/usb/misc/auerswald.c b/drivers/usb/misc/auerswald.c
--- a/drivers/usb/misc/auerswald.c Sat Mar 22 17:02:37 2003
+++ b/drivers/usb/misc/auerswald.c Sat Mar 22 17:02:37 2003
@@ -72,9 +72,6 @@
 #endif
 
 
-/* prefix for the device descriptors in /dev/usb */
-#define AU_PREFIX "auer"
-
 /* Number of read buffers for each device */
 #define AU_RBUFFERS 10
 
@@ -243,7 +240,7 @@
 typedef struct
 {
         struct semaphore mutex; /* protection in user context */
- char name[16]; /* name of the /dev/usb entry */
+ char name[20]; /* name of the /dev/usb entry */
         unsigned int dtindex; /* index in the device table */
         devfs_handle_t devfs; /* devfs device node */
         struct usb_device * usbdev; /* USB device handle */
@@ -260,9 +257,6 @@
         wait_queue_head_t bufferwait; /* wait for a control buffer */
 } auerswald_t,*pauerswald_t;
 
-/* the global usb devfs handle */
-extern devfs_handle_t usb_devfs_handle;
-
 /* array of pointers to our devices that are currently connected */
 static pauerswald_t dev_table[AUER_MAX_DEVICES];
 
@@ -1440,7 +1434,7 @@
 
         cp->open_count++;
         ccp->auerdev = cp;
- dbg("open %s as /dev/usb/%s", cp->dev_desc, cp->name);
+ dbg("open %s as /dev/%s", cp->dev_desc, cp->name);
         up (&cp->mutex);
 
         /* file IO stuff */
@@ -1970,7 +1964,7 @@
         }
 
         /* Give the device a name */
- sprintf (cp->name, AU_PREFIX "%d", dtindex);
+ sprintf (cp->name, "usb/auer%d", dtindex);
 
         /* Store the index */
         cp->dtindex = dtindex;
@@ -1978,8 +1972,7 @@
         up (&dev_table_mutex);
 
         /* initialize the devfs node for this device and register it */
- cp->devfs = devfs_register (usb_devfs_handle, cp->name,
- DEVFS_FL_DEFAULT, USB_MAJOR,
+ cp->devfs = devfs_register(NULL, cp->name, 0, USB_MAJOR,
                                     AUER_MINOR_BASE + dtindex,
                                     S_IFCHR | S_IRUGO | S_IWUGO,
                                     &auerswald_fops, NULL);
@@ -2089,7 +2082,7 @@
                 return;
 
         down (&cp->mutex);
- info ("device /dev/usb/%s now disconnecting", cp->name);
+ info ("device /dev/%s now disconnecting", cp->name);
 
         /* remove from device table */
         /* Nobody can open() this device any more */
diff -Nru a/drivers/usb/misc/brlvger.c b/drivers/usb/misc/brlvger.c
--- a/drivers/usb/misc/brlvger.c Sat Mar 22 17:02:37 2003
+++ b/drivers/usb/misc/brlvger.c Sat Mar 22 17:02:37 2003
@@ -144,8 +144,6 @@
 #define rcvcontrolmsg(priv,a,b,c,d,e,f) \
     controlmsg(priv, USB_DIR_IN, a,b,c,d,e,f)
 
-extern devfs_handle_t usb_devfs_handle; /* /dev/usb dir. */
-
 /* ----------------------------------------------------------------------- */
 
 /* Data */
@@ -294,7 +292,7 @@
         /* protects against reentrance: once we've found a free slot
            we reserve it.*/
         static DECLARE_MUTEX(reserve_sem);
- char devfs_name[16];
+ char devfs_name[20];
 
         actifsettings = dev->actconfig->interface->altsetting;
 
@@ -375,8 +373,8 @@
         };
         dbg("Display length: %d", priv->plength);
 
- sprintf(devfs_name, "brlvger%d", priv->subminor);
- priv->devfs = devfs_register(usb_devfs_handle, devfs_name,
+ sprintf(devfs_name, "usb/brlvger%d", priv->subminor);
+ priv->devfs = devfs_register(NULL, devfs_name,
                                      DEVFS_FL_DEFAULT, USB_MAJOR,
                                      BRLVGER_MINOR+priv->subminor,
                                      S_IFCHR |S_IRUSR|S_IWUSR |S_IRGRP|S_IWGRP,
diff -Nru a/drivers/usb/misc/rio500.c b/drivers/usb/misc/rio500.c
--- a/drivers/usb/misc/rio500.c Sat Mar 22 17:02:37 2003
+++ b/drivers/usb/misc/rio500.c Sat Mar 22 17:02:37 2003
@@ -76,8 +76,6 @@
         struct semaphore lock; /* general race avoidance */
 };
 
-extern devfs_handle_t usb_devfs_handle; /* /dev/usb dir. */
-
 static struct rio_usb_data rio_instance;
 
 static int open_rio(struct inode *inode, struct file *file)
@@ -478,7 +476,7 @@
         }
         dbg("probe_rio: ibuf address:%p", rio->ibuf);
 
- rio->devfs = devfs_register(usb_devfs_handle, "rio500",
+ rio->devfs = devfs_register(NULL, "usb/rio500",
                                     DEVFS_FL_DEFAULT, USB_MAJOR,
                                     RIO_MINOR,
                                     S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP |
diff -Nru a/drivers/usb/net/rtl8150.c b/drivers/usb/net/rtl8150.c
--- a/drivers/usb/net/rtl8150.c Sat Mar 22 17:02:37 2003
+++ b/drivers/usb/net/rtl8150.c Sat Mar 22 17:02:37 2003
@@ -107,7 +107,6 @@
 typedef struct rtl8150 rtl8150_t;
 
 /* the global usb devfs handle */
-extern devfs_handle_t usb_devfs_handle;
 unsigned long multicast_filter_limit = 32;
 
 static void fill_skb_pool(rtl8150_t *);
diff -Nru a/drivers/usb/usb-skeleton.c b/drivers/usb/usb-skeleton.c
--- a/drivers/usb/usb-skeleton.c Sat Mar 22 17:02:37 2003
+++ b/drivers/usb/usb-skeleton.c Sat Mar 22 17:02:37 2003
@@ -119,9 +119,6 @@
 };
 
 
-/* the global usb devfs handle */
-extern devfs_handle_t usb_devfs_handle;
-
 /* prevent races between open() and disconnect() */
 static DECLARE_MUTEX (disconnect_sem);
 
@@ -514,7 +511,7 @@
         size_t buffer_size;
         int i;
         int retval;
- char name[10];
+ char name[14];
 
 
         /* See if the device offered us matches what we can accept */
@@ -609,9 +606,9 @@
         }
 
         /* initialize the devfs node for this device and register it */
- sprintf(name, "skel%d", dev->minor);
+ sprintf(name, "usb/skel%d", dev->minor);
 
- dev->devfs = devfs_register (usb_devfs_handle, name,
+ dev->devfs = devfs_register(NULL, name,
                                      DEVFS_FL_DEFAULT, USB_MAJOR,
                                      dev->minor,
                                      S_IFCHR | S_IRUSR | S_IWUSR |
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Sun Mar 23 2003 - 22:00:41 EST