Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1313780
| From | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [PATCH 4.3 18/55] usb: core : hub: Fix BOS NULL pointer kernel panic |
| Date | 2016-01-21 02:00 +0100 |
| Message-ID | <qTbLv-5Sa-59@gated-at.bofh.it> (permalink) |
| References | <qTbBL-5Oq-3@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
4.3-stable review patch. If anyone has any objections, please let me know.
------------------
From: Hans Yang <hansy@nvidia.com>
commit 464ad8c43a9ead98c2b0eaed86bea727f2ad106e upstream.
When a USB 3.0 mass storage device is disconnected in transporting
state, storage device driver may handle it as a transport error and
reset the device by invoking usb_reset_and_verify_device()
and following could happen:
in usb_reset_and_verify_device():
udev->bos = NULL;
For U1/U2 enabled devices, driver will disable LPM, and in some
conditions:
from usb_unlocked_disable_lpm()
--> usb_disable_lpm()
--> usb_enable_lpm()
udev->bos->ss_cap->bU1devExitLat;
And it causes 'NULL pointer' and 'kernel panic':
[ 157.976257] Unable to handle kernel NULL pointer dereference
at virtual address 00000010
...
[ 158.026400] PC is at usb_enable_link_state+0x34/0x2e0
[ 158.031442] LR is at usb_enable_lpm+0x98/0xac
...
[ 158.137368] [<ffffffc0006a1cac>] usb_enable_link_state+0x34/0x2e0
[ 158.143451] [<ffffffc0006a1fec>] usb_enable_lpm+0x94/0xac
[ 158.148840] [<ffffffc0006a20e8>] usb_disable_lpm+0xa8/0xb4
...
[ 158.214954] Kernel panic - not syncing: Fatal exception
This commit moves 'udev->bos = NULL' behind usb_unlocked_disable_lpm()
to prevent from NULL pointer access.
Issue can be reproduced by following setup:
1) A SS pen drive behind a SS hub connected to the host.
2) Transporting data between the pen drive and the host.
3) Abruptly disconnect hub and pen drive from host.
4) With a chance it crashes.
Signed-off-by: Hans Yang <hansy@nvidia.com>
Acked-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/usb/core/hub.c | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
@@ -5322,9 +5322,6 @@ static int usb_reset_and_verify_device(s
if (udev->usb2_hw_lpm_enabled == 1)
usb_set_usb2_hardware_lpm(udev, 0);
- bos = udev->bos;
- udev->bos = NULL;
-
/* Disable LPM and LTM while we reset the device and reinstall the alt
* settings. Device-initiated LPM settings, and system exit latency
* settings are cleared when the device is reset, so we have to set
@@ -5333,15 +5330,18 @@ static int usb_reset_and_verify_device(s
ret = usb_unlocked_disable_lpm(udev);
if (ret) {
dev_err(&udev->dev, "%s Failed to disable LPM\n.", __func__);
- goto re_enumerate;
+ goto re_enumerate_no_bos;
}
ret = usb_disable_ltm(udev);
if (ret) {
dev_err(&udev->dev, "%s Failed to disable LTM\n.",
__func__);
- goto re_enumerate;
+ goto re_enumerate_no_bos;
}
+ bos = udev->bos;
+ udev->bos = NULL;
+
for (i = 0; i < SET_CONFIG_TRIES; ++i) {
/* ep0 maxpacket size may change; let the HCD know about it.
@@ -5438,10 +5438,11 @@ done:
return 0;
re_enumerate:
- /* LPM state doesn't matter when we're about to destroy the device. */
- hub_port_logical_disconnect(parent_hub, port1);
usb_release_bos_descriptor(udev);
udev->bos = bos;
+re_enumerate_no_bos:
+ /* LPM state doesn't matter when we're about to destroy the device. */
+ hub_port_logical_disconnect(parent_hub, port1);
return -ENODEV;
}
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[PATCH 4.3 00/55] 4.3.4-stable review Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-01-21 01:50 +0100
[PATCH 4.3 41/55] skbuff: Fix offset error in skb_reorder_vlan_header Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-01-21 01:50 +0100
[PATCH 4.3 37/55] sh_eth: fix kernel oops in skb_put() Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-01-21 01:50 +0100
[PATCH 4.3 34/55] openvswitch: Respect conntrack zone even if invalid Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-01-21 01:50 +0100
[PATCH 4.3 39/55] pptp: verify sockaddr_len in pptp_bind() and pptp_connect() Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-01-21 01:50 +0100
[PATCH 4.3 33/55] openvswitch: Fix helper reference leak Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-01-21 01:50 +0100
[PATCH 4.3 22/55] atl1c: Improve driver not to do order 4 GFP_ATOMIC allocation Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-01-21 01:50 +0100
[PATCH 4.3 29/55] net: qca_spi: fix transmit queue timeout handling Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-01-21 01:50 +0100
[PATCH 4.3 30/55] r8152: fix lockup when runtime PM is enabled Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-01-21 01:50 +0100
[PATCH 4.3 10/55] USB: serial: Another Infineon flash loader USB ID Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-01-21 01:50 +0100
[PATCH 4.3 47/55] inet: tcp: fix inetpeer_set_addr_v4() Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-01-21 01:50 +0100
[PATCH 4.3 19/55] usb: Use the USB_SS_MULT() macro to decode burst multiplier for log message Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-01-21 01:50 +0100
[PATCH 4.3 05/55] ACPI: Using correct irq when waiting for events Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-01-21 01:50 +0100
[PATCH 4.3 11/55] usb-storage: Fix scsi-sd failure "Invalid field in cdb" for USB adapter JMicron Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-01-21 01:50 +0100
[PATCH 4.3 55/55] KEYS: Fix keyring ref leak in join_session_keyring() Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-01-21 01:50 +0100
[PATCH 4.3 26/55] sctp: update the netstamp_needed counter when copying sockets Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-01-21 02:00 +0100
[PATCH 4.3 07/55] tpm, tpm_tis: fix tpm_tis ACPI detection issue with TPM 2.0 Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-01-21 02:00 +0100
[PATCH 4.3 16/55] USB: host: ohci-at91: fix a crash in ohci_hcd_at91_overcurrent_irq Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-01-21 02:00 +0100
[PATCH 4.3 09/55] USB: cdc_acm: Ignore Infineon Flash Loader utility Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-01-21 02:00 +0100
[PATCH 4.3 14/55] USB: whci-hcd: add check for dma mapping error Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-01-21 02:00 +0100
[PATCH 4.3 43/55] net_sched: make qdisc_tree_decrease_qlen() work for non mq Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-01-21 02:00 +0100
[PATCH 4.3 24/55] vxlan: fix incorrect RCO bit in VXLAN header Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-01-21 02:00 +0100
[PATCH 4.3 42/55] net: check both type and procotol for tcp sockets Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-01-21 02:00 +0100
[PATCH 4.3 17/55] usb: musb: USB_TI_CPPI41_DMA requires dmaengine support Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-01-21 02:00 +0100
[PATCH 4.3 15/55] usb: gadget: pxa27x: fix suspend callback Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-01-21 02:00 +0100
[PATCH 4.3 45/55] net: fix uninitialized variable issue Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-01-21 02:00 +0100
[PATCH 4.3 49/55] gianfar: Dont enable RX Filer if not supported Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-01-21 02:00 +0100
[PATCH 4.3 44/55] bluetooth: Validate socket address length in sco_sock_bind(). Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-01-21 02:00 +0100
[PATCH 4.3 32/55] phy: micrel: Fix finding PHY properties in MAC node. Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-01-21 02:00 +0100
[PATCH 4.3 38/55] net: fix IP early demux races Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-01-21 02:00 +0100
[PATCH 4.3 21/55] gre6: allow to update all parameters via rtnl Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-01-21 02:00 +0100
[PATCH 4.3 35/55] uapi: export ila.h Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-01-21 02:00 +0100
[PATCH 4.3 48/55] rhashtable: Enforce minimum size on initial hash table Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-01-21 02:00 +0100
[PATCH 4.3 52/55] tcp: restore fastopen with no data in SYN packet Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-01-21 02:00 +0100
[PATCH 4.3 06/55] ACPI / PM: Fix incorrect wakeup IRQ setting during suspend-to-idle Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-01-21 02:00 +0100
[PATCH 4.3 31/55] ipv6: sctp: clone options to avoid use after free Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-01-21 02:00 +0100
[PATCH 4.3 18/55] usb: core : hub: Fix BOS NULL pointer kernel panic Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-01-21 02:00 +0100
[PATCH 4.3 25/55] sctp: use the same clock as if sock source timestamps were on Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-01-21 02:00 +0100
[PATCH 4.3 20/55] pppoe: fix memory corruption in padt work structure Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-01-21 02:00 +0100
[PATCH 4.3 27/55] sctp: also copy sk_tsflags when copying the socket Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-01-21 02:00 +0100
[PATCH 4.3 03/55] tipc: Fix kfree_skb() of uninitialised pointer Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-01-21 02:00 +0100
[PATCH 4.3 50/55] fou: clean up socket with kfree_rcu Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-01-21 02:00 +0100
[PATCH 4.3 01/55] Revert "vrf: fix double free and memory corruption on register_netdevice failure" Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-01-21 02:10 +0100
Re: [PATCH 4.3 00/55] 4.3.4-stable review Shuah Khan <shuahkh@osg.samsung.com> - 2016-01-21 02:50 +0100
Re: [PATCH 4.3 00/55] 4.3.4-stable review Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-01-22 09:00 +0100
Re: [PATCH 4.3 00/55] 4.3.4-stable review Mel Gorman <mgorman@techsingularity.net> - 2016-01-21 10:50 +0100
Re: [PATCH 4.3 00/55] 4.3.4-stable review Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-01-22 09:00 +0100
Re: [PATCH 4.3 00/55] 4.3.4-stable review Mel Gorman <mgorman@techsingularity.net> - 2016-01-22 09:20 +0100
Re: [PATCH 4.3 00/55] 4.3.4-stable review Guenter Roeck <linux@roeck-us.net> - 2016-01-21 13:30 +0100
Re: [PATCH 4.3 00/55] 4.3.4-stable review Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-01-22 09:00 +0100
csiph-web