aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/kernel-parameters.txt5
-rw-r--r--drivers/usb/core/hcd.c17
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 */
345static int authorized_default = -1;
346module_param(authorized_default, int, S_IRUGO|S_IWUSR);
347MODULE_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,