ChangeSet 1.1254.1.82, 2003/06/02 10:38:23-07:00, [EMAIL PROTECTED]

[PATCH] Root plug: remove USB bus walking functions, now use usb_find_device().

Also fixed compiler warnings about the dbg() function.


 security/root_plug.c |   69 +++++++--------------------------------------------
 1 files changed, 10 insertions(+), 59 deletions(-)


diff -Nru a/security/root_plug.c b/security/root_plug.c
--- a/security/root_plug.c      Mon Jun  2 11:19:51 2003
+++ b/security/root_plug.c      Mon Jun  2 11:19:51 2003
@@ -54,7 +54,7 @@
 #define MY_NAME "root_plug"
 #endif
 
-#define dbg(fmt, arg...)                                       \
+#define root_dbg(fmt, arg...)                                  \
        do {                                                    \
                if (debug)                                      \
                        printk(KERN_DEBUG "%s: %s: " fmt ,      \
@@ -62,70 +62,21 @@
                                ## arg);                        \
        } while (0)
 
-extern struct list_head usb_bus_list;
-extern struct semaphore usb_bus_list_lock;
-
-static int match_device (struct usb_device *dev)
-{
-       int retval = -ENODEV;
-       int child;
-
-       dbg ("looking at vendor %d, product %d\n",
-            dev->descriptor.idVendor,
-            dev->descriptor.idProduct);
-
-       /* see if this device matches */
-       if ((dev->descriptor.idVendor == vendor_id) &&
-           (dev->descriptor.idProduct == product_id)) {
-               dbg ("found the device!\n");
-               retval = 0;
-               goto exit;
-       }
-
-       /* look through all of the children of this device */
-       for (child = 0; child < dev->maxchild; ++child) {
-               if (dev->children[child]) {
-                       retval = match_device (dev->children[child]);
-                       if (retval == 0)
-                               goto exit;
-               }
-       }
-exit:
-       return retval;
-}
-
-static int find_usb_device (void)
-{
-       struct list_head *buslist;
-       struct usb_bus *bus;
-       int retval = -ENODEV;
-       
-       down (&usb_bus_list_lock);
-       for (buslist = usb_bus_list.next;
-            buslist != &usb_bus_list; 
-            buslist = buslist->next) {
-               bus = container_of (buslist, struct usb_bus, bus_list);
-               retval = match_device(bus->root_hub);
-               if (retval == 0)
-                       goto exit;
-       }
-exit:
-       up (&usb_bus_list_lock);
-       return retval;
-}
-       
-
 static int rootplug_bprm_check_security (struct linux_binprm *bprm)
 {
-       dbg ("file %s, e_uid = %d, e_gid = %d\n",
-            bprm->filename, bprm->e_uid, bprm->e_gid);
+       struct usb_device *dev;
+
+       root_dbg("file %s, e_uid = %d, e_gid = %d\n",
+                bprm->filename, bprm->e_uid, bprm->e_gid);
 
        if (bprm->e_gid == 0) {
-               if (find_usb_device() != 0) {
-                       dbg ("e_gid = 0, and device not found, "
-                               "task not allowed to run...\n");
+               dev = usb_find_device(vendor_id, product_id);
+               if (!dev) {
+                       root_dbg("e_gid = 0, and device not found, "
+                                "task not allowed to run...\n");
                        return -EPERM;
                }
+               usb_put_dev(dev);
        }
 
        return 0;



-------------------------------------------------------
This SF.net email is sponsored by: eBay
Get office equipment for less on eBay!
http://adfarm.mediaplex.com/ad/ck/711-11697-6916-5
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to