diff options
-rw-r--r-- | Documentation/kernel-parameters.txt | 5 | ||||
-rw-r--r-- | drivers/usb/core/hcd.c | 17 |
2 files changed, 21 insertions, 1 deletions
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index d9a203b058f1..74230bd14b05 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt | |||
@@ -2538,6 +2538,11 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
2538 | unknown_nmi_panic | 2538 | unknown_nmi_panic |
2539 | [X86] Cause panic on unknown NMI. | 2539 | [X86] Cause panic on unknown NMI. |
2540 | 2540 | ||
2541 | usbcore.authorized_default= | ||
2542 | [USB] Default USB device authorization: | ||
2543 | (default -1 = authorized except for wireless USB, | ||
2544 | 0 = not authorized, 1 = authorized) | ||
2545 | |||
2541 | usbcore.autosuspend= | 2546 | usbcore.autosuspend= |
2542 | [USB] The autosuspend time delay (in seconds) used | 2547 | [USB] The autosuspend time delay (in seconds) used |
2543 | for newly-detected USB devices (default 2). This | 2548 | for newly-detected USB devices (default 2). This |
diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c index ace9f8442e5d..8669ba3fe794 100644 --- a/drivers/usb/core/hcd.c +++ b/drivers/usb/core/hcd.c | |||
@@ -337,6 +337,17 @@ static const u8 ss_rh_config_descriptor[] = { | |||
337 | 0x02, 0x00 /* __le16 ss_wBytesPerInterval; 15 bits for max 15 ports */ | 337 | 0x02, 0x00 /* __le16 ss_wBytesPerInterval; 15 bits for max 15 ports */ |
338 | }; | 338 | }; |
339 | 339 | ||
340 | /* authorized_default behaviour: | ||
341 | * -1 is authorized for all devices except wireless (old behaviour) | ||
342 | * 0 is unauthorized for all devices | ||
343 | * 1 is authorized for all devices | ||
344 | */ | ||
345 | static int authorized_default = -1; | ||
346 | module_param(authorized_default, int, S_IRUGO|S_IWUSR); | ||
347 | MODULE_PARM_DESC(authorized_default, | ||
348 | "Default USB device authorization: 0 is not authorized, 1 is " | ||
349 | "authorized, -1 is authorized except for wireless USB (default, " | ||
350 | "old behaviour"); | ||
340 | /*-------------------------------------------------------------------------*/ | 351 | /*-------------------------------------------------------------------------*/ |
341 | 352 | ||
342 | /** | 353 | /** |
@@ -2371,7 +2382,11 @@ int usb_add_hcd(struct usb_hcd *hcd, | |||
2371 | 2382 | ||
2372 | dev_info(hcd->self.controller, "%s\n", hcd->product_desc); | 2383 | dev_info(hcd->self.controller, "%s\n", hcd->product_desc); |
2373 | 2384 | ||
2374 | hcd->authorized_default = hcd->wireless? 0 : 1; | 2385 | /* Keep old behaviour if authorized_default is not in [0, 1]. */ |
2386 | if (authorized_default < 0 || authorized_default > 1) | ||
2387 | hcd->authorized_default = hcd->wireless? 0 : 1; | ||
2388 | else | ||
2389 | hcd->authorized_default = authorized_default; | ||
2375 | set_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags); | 2390 | set_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags); |
2376 | 2391 | ||
2377 | /* HC is in reset state, but accessible. Now do the one-time init, | 2392 | /* HC is in reset state, but accessible. Now do the one-time init, |