aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/core
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/usb/core')
-rw-r--r--drivers/usb/core/hcd.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c
index ace9f8442e5..8669ba3fe79 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,