USB: Add "authorized_default" parameter to the usbcore module
authorCarl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
Tue, 31 May 2011 19:31:08 +0000 (21:31 +0200)
committerGreg Kroah-Hartman <gregkh@suse.de>
Mon, 6 Jun 2011 23:41:47 +0000 (16:41 -0700)
The "authorized_default" module parameter of usbcore controls the default
for the authorized_default variable of each USB host controller.
-1 is authorized for all devices except wireless (default, old behaviour)
0 is unauthorized for all devices
1 is authorized for all devices

Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

Documentation/kernel-parameters.txt
drivers/usb/core/hcd.c

index d9a203b..74230bd 100644 (file)
@@ -2538,6 +2538,11 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
        unknown_nmi_panic
                        [X86] Cause panic on unknown NMI.
 
+       usbcore.authorized_default=
+                       [USB] Default USB device authorization:
+                       (default -1 = authorized except for wireless USB,
+                       0 = not authorized, 1 = authorized)
+
        usbcore.autosuspend=
                        [USB] The autosuspend time delay (in seconds) used
                        for newly-detected USB devices (default 2).  This
index ace9f84..8669ba3 100644 (file)
@@ -337,6 +337,17 @@ static const u8 ss_rh_config_descriptor[] = {
        0x02, 0x00   /* __le16 ss_wBytesPerInterval; 15 bits for max 15 ports */
 };
 
+/* authorized_default behaviour:
+ * -1 is authorized for all devices except wireless (old behaviour)
+ * 0 is unauthorized for all devices
+ * 1 is authorized for all devices
+ */
+static int authorized_default = -1;
+module_param(authorized_default, int, S_IRUGO|S_IWUSR);
+MODULE_PARM_DESC(authorized_default,
+               "Default USB device authorization: 0 is not authorized, 1 is "
+               "authorized, -1 is authorized except for wireless USB (default, "
+               "old behaviour");
 /*-------------------------------------------------------------------------*/
 
 /**
@@ -2371,7 +2382,11 @@ int usb_add_hcd(struct usb_hcd *hcd,
 
        dev_info(hcd->self.controller, "%s\n", hcd->product_desc);
 
-       hcd->authorized_default = hcd->wireless? 0 : 1;
+       /* Keep old behaviour if authorized_default is not in [0, 1]. */
+       if (authorized_default < 0 || authorized_default > 1)
+               hcd->authorized_default = hcd->wireless? 0 : 1;
+       else
+               hcd->authorized_default = authorized_default;
        set_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags);
 
        /* HC is in reset state, but accessible.  Now do the one-time init,