aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/core/hub.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2018-12-09 13:18:24 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2018-12-09 13:18:24 -0500
commit50a5528a4b19b7324f0796ea2fedf32530a11ff8 (patch)
tree185a023ee6c30da3744ac3ddb610f88e432fdc65 /drivers/usb/core/hub.c
parentbc4caf186fb691ad56adbe578d356a262f3a7d10 (diff)
parent3caad34eab57e622dad48086af7f89c19001664e (diff)
Merge tag 'usb-4.20-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb
Pull USB fixes from Greg KH: "Here are some small USB fixes for 4.20-rc6 The "largest" here are some xhci fixes for reported issues. Also here is a USB core fix, some quirk additions, and a usb-serial fix which required the export of one of the tty layer's functions to prevent code duplication. The tty maintainer agreed with this change. All of these have been in linux-next with no reported issues" * tag 'usb-4.20-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb: xhci: Prevent U1/U2 link pm states if exit latency is too long xhci: workaround CSS timeout on AMD SNPS 3.0 xHC USB: check usb_get_extra_descriptor for proper size USB: serial: console: fix reported terminal settings usb: quirk: add no-LPM quirk on SanDisk Ultra Flair device USB: Fix invalid-free bug in port_over_current_notify() usb: appledisplay: Add 27" Apple Cinema Display
Diffstat (limited to 'drivers/usb/core/hub.c')
-rw-r--r--drivers/usb/core/hub.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
index 0f9381b69a3b..f76b2e0aba9d 100644
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
@@ -2251,7 +2251,7 @@ static int usb_enumerate_device_otg(struct usb_device *udev)
2251 /* descriptor may appear anywhere in config */ 2251 /* descriptor may appear anywhere in config */
2252 err = __usb_get_extra_descriptor(udev->rawdescriptors[0], 2252 err = __usb_get_extra_descriptor(udev->rawdescriptors[0],
2253 le16_to_cpu(udev->config[0].desc.wTotalLength), 2253 le16_to_cpu(udev->config[0].desc.wTotalLength),
2254 USB_DT_OTG, (void **) &desc); 2254 USB_DT_OTG, (void **) &desc, sizeof(*desc));
2255 if (err || !(desc->bmAttributes & USB_OTG_HNP)) 2255 if (err || !(desc->bmAttributes & USB_OTG_HNP))
2256 return 0; 2256 return 0;
2257 2257
@@ -5163,7 +5163,7 @@ static void hub_port_connect_change(struct usb_hub *hub, int port1,
5163/* Handle notifying userspace about hub over-current events */ 5163/* Handle notifying userspace about hub over-current events */
5164static void port_over_current_notify(struct usb_port *port_dev) 5164static void port_over_current_notify(struct usb_port *port_dev)
5165{ 5165{
5166 static char *envp[] = { NULL, NULL, NULL }; 5166 char *envp[3];
5167 struct device *hub_dev; 5167 struct device *hub_dev;
5168 char *port_dev_path; 5168 char *port_dev_path;
5169 5169
@@ -5187,6 +5187,7 @@ static void port_over_current_notify(struct usb_port *port_dev)
5187 if (!envp[1]) 5187 if (!envp[1])
5188 goto exit; 5188 goto exit;
5189 5189
5190 envp[2] = NULL;
5190 kobject_uevent_env(&hub_dev->kobj, KOBJ_CHANGE, envp); 5191 kobject_uevent_env(&hub_dev->kobj, KOBJ_CHANGE, envp);
5191 5192
5192 kfree(envp[1]); 5193 kfree(envp[1]);