linux/drivers
Elric Fu 29b3f4e6bc xHCI: handle command after aborting the command ring
commit b63f4053cc upstream.

According to xHCI spec section 4.6.1.1 and section 4.6.1.2,
after aborting a command on the command ring, xHC will
generate a command completion event with its completion
code set to Command Ring Stopped at least. If a command is
currently executing at the time of aborting a command, xHC
also generate a command completion event with its completion
code set to Command Abort. When the command ring is stopped,
software may remove, add, or rearrage Command Descriptors.

To cancel a command, software will initialize a command
descriptor for the cancel command, and add it into a
cancel_cmd_list of xhci. When the command ring is stopped,
software will find the command trbs described by command
descriptors in cancel_cmd_list and modify it to No Op
command. If software can't find the matched trbs, we can
think it had been finished.

This patch should be backported to kernels as old as 3.0, that contain
the commit 7ed603ecf8 "xhci: Add an
assertion to check for virt_dev=0 bug." That commit papers over a NULL
pointer dereference, and this patch fixes the underlying issue that
caused the NULL pointer dereference.

Note from Sarah: The TRB_TYPE_LINK_LE32 macro is not in the 3.0 stable
kernel, so I added it to this patch.

Signed-off-by: Elric Fu <elricfu1@gmail.com>
Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Tested-by: Miroslav Sabljic <miroslav.sabljic@avl.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-10-28 10:02:14 -07:00
..
accessibility
acpi ACPI: EC: Add a quirk for CLEVO M720T/M730T laptop 2012-10-21 09:17:09 -07:00
amba
ata libata: Prevent interface errors with Seagate FreeAgent GoFlex 2012-10-02 09:47:41 -07:00
atm solos-pci: Fix DMA support 2012-06-10 00:32:58 +09:00
auxdisplay
base PM / Runtime: Clear power.deferred_resume on success in rpm_suspend() 2012-10-02 09:47:40 -07:00
bcma
block aoe: assert AoE packets marked as requiring no checksum 2012-10-13 05:28:08 +09:00
bluetooth Bluetooth: Add support for Apple vendor-specific devices 2012-10-02 09:47:41 -07:00
cdrom cdrom: use copy_to_user() without the underscores 2012-02-29 16:34:35 -08:00
char tpm: Propagate error from tpm_transmit to fix a timeout hang 2012-10-21 09:17:12 -07:00
clk
clocksource
connector
cpufreq cpufreq/powernow-k8: workqueue user shouldn't migrate the kworker to another CPU 2012-10-02 09:47:22 -07:00
cpuidle
crypto crypto: mv_cesa requires on CRYPTO_HASH to build 2012-05-21 09:40:03 -07:00
dca
dio
dma dmaengine: at_hdmac: check that each sg data length is non-null 2012-10-02 09:47:37 -07:00
edac amd64_edac:__amd64_set_scrub_rate(): avoid overindexing scrubrates[] 2012-10-28 10:02:12 -07:00
eisa
firewire firewire: cdev: fix user memory corruption (i386 userland on amd64 kernel) 2012-10-21 09:17:10 -07:00
firmware firmware: Add missing attributes to EFI variable attribute print out from sysfs 2012-10-07 08:27:25 -07:00
gpio pch_gpio: Support new device LAPIS Semiconductor ML7831 IOH 2012-05-21 09:40:05 -07:00
gpu drm/i915: apply timing generator bug workaround on CPT and PPT 2012-10-28 10:02:12 -07:00
hid HID: add more hotkeys in Asus AIO keyboards 2012-04-02 09:27:12 -07:00
hwmon hwmon: (ads7871) Add 'name' sysfs attribute 2012-10-02 09:47:26 -07:00
hwspinlock hwspinlock/core: use a mutex to protect the radix tree 2011-11-11 09:36:31 -08:00
i2c i2c: davinci: Free requested IRQ in remove 2012-06-01 15:13:01 +08:00
ide block: add and use scsi_blk_cmd_ioctl 2012-01-25 17:24:54 -08:00
idle intel_idle: fix API misuse 2012-01-25 17:24:56 -08:00
ieee802154
infiniband IB/srp: Avoid having aborted requests hang 2012-10-07 08:27:27 -07:00
input Input: i8042 - disable mux on Toshiba C850D 2012-10-02 09:47:27 -07:00
isdn isdnloop: fix and simplify isdnloop_init() 2012-10-02 09:47:05 -07:00
leds Revert "leds: save the delay values after a successful call to blink_set()" 2011-11-21 14:31:19 -08:00
lguest
macintosh
mca
md dm: handle requests beyond end of device instead of using BUG_ON 2012-10-07 08:27:23 -07:00
media media: au0828: fix case where STREAMOFF being called on stopped stream causes BUG() 2012-10-28 10:02:12 -07:00
memstick
message
mfd ARM: pxa: remove irq_to_gpio from ezx-pcap driver 2012-08-15 12:04:30 -07:00
misc drivers/misc/sgi-xp/xpc_uv.c: SGI XPC fails to load when cpu 0 is out of IRQ resources 2012-10-02 09:47:40 -07:00
mmc mmc: Prevent 1.8V switch for SD hosts that don't support UHS modes. 2012-10-02 09:47:54 -07:00
mtd mtd: omap2: fix module loading 2012-10-13 05:28:15 +09:00
net skge: Add DMA mask quirk for Marvell 88E8001 on ASUS P5NSLI motherboard 2012-10-28 10:02:13 -07:00
nfc
nubus
of
oprofile oprofile: perf: use NR_CPUS instead or nr_cpumask_bits for static array 2012-07-16 08:47:48 -07:00
parisc
parport
pci PCI: Check P2P bridge for invalid secondary/subordinate range 2012-10-13 05:28:09 +09:00
pcmcia pcmcia: sharpsl: don't discard sharpsl_pcmcia_ops 2012-10-28 10:02:11 -07:00
platform asus-nb-wmi: add some video toggle keys 2012-10-02 09:47:40 -07:00
pnp PNPACPI: Fix device ref leaking in acpi_pnp_match 2012-04-13 08:14:05 -07:00
power drivers/power/ds2780_battery.c: fix deadlock upon insertion and removal 2011-11-11 09:36:32 -08:00
pps
ps3
ptp ptp: Fix clock_getres() implementation 2011-12-21 12:57:36 -08:00
rapidio rapidio: fix use of non-compatible registers 2011-10-03 11:39:46 -07:00
regulator regulator: Fix the logic to ensure new voltage setting in valid range 2012-05-21 09:39:58 -07:00
rtc drivers/rtc/rtc-rs5c348.c: fix hour decoding in 12-hour mode 2012-10-02 09:47:39 -07:00
s390 SCSI: zfcp: only access zfcp_scsi_dev for valid scsi_device 2012-10-13 05:28:09 +09:00
sbus
scsi drivers/scsi/atp870u.c: fix bad use of udelay 2012-10-13 05:28:03 +09:00
sfi
sh
sn
spi spi/spi-fsl-spi: reference correct pdata in fsl_spi_cs_control 2012-10-02 09:47:54 -07:00
ssb ssb: fix init regression with SoCs 2012-01-06 14:13:48 -08:00
staging staging: comedi: fix memory leak for saved channel list 2012-10-07 08:27:24 -07:00
target target: Fix ->data_length re-assignment bug with SCSI overflow 2012-10-02 09:47:23 -07:00
tc
telephony
thermal
tty n_gsm: memory leak in uplink error path 2012-10-07 08:27:26 -07:00
uio
usb xHCI: handle command after aborting the command ring 2012-10-28 10:02:14 -07:00
uwb uwb: fix error handling 2012-04-27 09:51:06 -07:00
vhost vhost: don't forget to schedule() 2012-07-16 08:47:51 -07:00
video viafb: don't touch clock state on OLPC XO-1.5 2012-10-21 09:17:10 -07:00
virtio virtio-pci: fix use after free 2011-11-21 14:31:14 -08:00
vlynq
w1 drivers/power/ds2780_battery.c: add a nolock function to w1 interface 2011-11-11 09:36:32 -08:00
watchdog hpwdt: Fix kdump issue in hpwdt 2012-10-02 09:47:27 -07:00
xen xen/xenbus: Add quirk to deal with misconfigured backends. 2012-04-27 09:51:05 -07:00
zorro zorro: Defer device_register() until all devices have been identified 2011-10-03 11:40:57 -07:00
Kconfig
Makefile