|
@@ -337,6 +337,17 @@ static const u8 ss_rh_config_descriptor[] = {
|
|
0x02, 0x00 /* __le16 ss_wBytesPerInterval; 15 bits for max 15 ports */
|
|
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);
|
|
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);
|
|
set_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags);
|
|
|
|
|
|
/* HC is in reset state, but accessible. Now do the one-time init,
|
|
/* HC is in reset state, but accessible. Now do the one-time init,
|