linux/drivers
Javi Merino fdec53d520 DMA: PL330: Fix racy mutex unlock
pl330_update() stores a pointer to the thrd->req that finished, which
contains a pointer to the corresponding pl330_req.  This is done with
the pl330_lock held.  Then, it iterates through the req_done list,
calling the callback for each of the requests that are done.  The
problem is that the driver releases the lock before calling the
callback for each of the callbacks.  pl330_submit_req() running in
another processor can then acquire the lock and insert another request
in one of the thrd->req that hasn't been processed yet, replacing the
pointer to pl330_req there.  When the callback returns in
pl330_update() and the next rqdone is popped from the list, it
dereferences the pl330_req pointer to the just scheduled pl330_req,
instead of the one that has finished, calling pl330 with the wrong r.

This patch fixes this by storing the pointer to pl330_req directly in
the list.

Signed-off-by: Javi Merino <javi.merino@arm.com>
Cc: Jassi Brar <jaswinder.singh@linaro.org>
Acked-by: Jassi Brar <jaswinder.singh@linaro.org>
Signed-off-by: Vinod Koul <vinod.koul@linux.intel.com>
2012-06-14 08:39:52 +05:30
..
accessibility
acpi x86, realmode: Unbreak the ia64 build of drivers/acpi/sleep.c 2012-05-30 10:12:48 -07:00
amba arm-soc: driver specific updates 2012-05-26 12:22:27 -07:00
ata arm-soc: clock driver changes 2012-05-26 12:42:29 -07:00
atm solos-pci: Fix DMA support 2012-05-24 16:22:53 -04:00
auxdisplay
base Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2012-06-01 10:34:35 -07:00
bcma Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2012-05-24 11:54:29 -07:00
block mtip32xx: Changes to sysfs entries 2012-05-31 08:46:50 +02:00
bluetooth Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2012-05-24 11:54:29 -07:00
cdrom
char Merge branch 'drm-core-next' of git://people.freedesktop.org/~airlied/linux 2012-05-24 12:42:54 -07:00
clk arm-soc: soc specific changes, part 2 2012-05-26 13:05:55 -07:00
clocksource
connector
cpufreq
cpuidle cpuidle: Use kick_all_cpus_sync() 2012-05-08 12:35:06 +02:00
crypto arm-soc: clock driver changes 2012-05-26 12:42:29 -07:00
dca
devfreq Power management updates for 3.5 2012-05-23 14:07:06 -07:00
dio
dma DMA: PL330: Fix racy mutex unlock 2012-06-14 08:39:52 +05:30
edac Merge branch 'x86/trampoline' into x86/urgent 2012-05-30 12:11:32 -07:00
eisa
extcon Driver core pull for 3.5-rc1 2012-05-22 16:02:13 -07:00
firewire IEEE 1394 (FireWire) subsystem updates post v3.4: 2012-05-24 12:57:47 -07:00
firmware
gpio Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2012-05-29 18:27:19 -07:00
gpu Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux 2012-06-01 15:40:29 -07:00
hid Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2012-05-22 19:22:50 -07:00
hsi
hv Driver core pull for 3.5-rc1 2012-05-22 16:02:13 -07:00
hwmon hwmon/sch56xx: Depend on watchdog for watchdog core functions 2012-05-30 07:56:20 +02:00
hwspinlock
i2c i2c: Split I2C_M_NOSTART support out of I2C_FUNC_PROTOCOL_MANGLING 2012-05-30 10:55:34 +02:00
ide
idle
ieee802154 drivers/ieee802154: IEEE 802.15.4 loopback driver 2012-05-16 15:17:08 -04:00
iio iio: Use dev_to_iio_dev() 2012-05-14 13:37:45 -07:00
infiniband InfiniBand/RDMA changes for the 3.5 merge window: 2012-05-21 17:54:55 -07:00
input i2c: Split I2C_M_NOSTART support out of I2C_FUNC_PROTOCOL_MANGLING 2012-05-30 10:55:34 +02:00
iommu IOMMU Updates for Linux 3.5 2012-05-30 08:49:28 -07:00
isdn Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2012-05-24 11:54:29 -07:00
leds leds: add LM3533 LED driver 2012-05-29 16:22:32 -07:00
lguest
macintosh powerpc/windfarm: Fix crash on SMU based machine after i2c conversion 2012-05-09 10:58:21 +10:00
md Improve multipath's retrying mechanism in some defined circumstances 2012-06-02 17:39:40 -07:00
media arm-soc: clock driver changes 2012-05-26 12:42:29 -07:00
memory memory: tegra{20,30}-mc: Remove empty *_remove() 2012-05-14 12:52:52 -07:00
memstick
message Merge branch 'akpm' (Andrew's patch-bomb) 2012-05-31 18:10:18 -07:00
mfd ARM: ux500: Provide regulator support for SMSC911x via Device Tree 2012-06-01 02:04:46 +02:00
misc MFD changes for 3.5 2012-05-29 11:53:11 -07:00
mmc arm-soc: device tree conversions, part 2 2012-05-26 12:57:47 -07:00
mtd - More robust parsing especially of xattr data in JFFS2 2012-06-01 16:55:42 -07:00
net fec_mpc52xx: fix timestamp filtering 2012-06-02 17:09:08 -04:00
nfc NFC: potential integer overflow problem in check_crc() 2012-05-25 11:16:16 -04:00
nubus
of Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2012-05-29 18:27:19 -07:00
oprofile
parisc Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2012-05-22 19:22:50 -07:00
parport Driver core pull for 3.5-rc1 2012-05-22 16:02:13 -07:00
pci Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2012-05-29 18:27:19 -07:00
pcmcia
pinctrl pinctrl-nomadik: Allow Device Tree driver probing 2012-06-01 02:03:25 +02:00
platform apple-gmux: Fix up the suspend/resume patch 2012-06-01 15:18:52 -04:00
pnp
power A bunch of fixes for v3.5, nothing extraordinary. 2012-05-31 12:10:15 -07:00
pps
ps3
ptp Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2012-05-22 19:22:50 -07:00
rapidio rapidio/tsi721: add DMA engine support 2012-05-31 17:49:31 -07:00
regulator MFD changes for 3.5 2012-05-29 11:53:11 -07:00
remoteproc IOMMU Updates for Linux 3.5 2012-05-30 08:49:28 -07:00
rpmsg
rtc drivers/rtc/rtc-s3c.c: fix compiler warning 2012-05-29 16:22:34 -07:00
s390 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux 2012-05-31 10:51:10 -07:00
sbus
scsi SCSI misc on 20120531 2012-05-31 12:02:41 -07:00
sfi
sh sh: intc: Kill off special reservation interface. 2012-05-22 19:07:55 +09:00
sn
spi arm-soc: soc specific changes, part 2 2012-05-26 13:05:55 -07:00
ssb ssb: add PCI IDs 0x4322 and 43222 2012-05-16 12:46:37 -04:00
staging mm/fs: route MADV_REMOVE to FALLOC_FL_PUNCH_HOLE 2012-05-29 16:22:22 -07:00
target Merge branch 'sbp-target-merge' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending 2012-05-23 16:52:27 -07:00
tc
thermal
tty tty: Revert the tty locking series, it needs more work 2012-06-02 15:21:43 -07:00
uio uio_pdrv_genirq: get irq through platform resource if not set otherwise 2012-05-15 08:44:58 -07:00
usb arm-soc: clock driver changes 2012-05-26 12:42:29 -07:00
uwb
vhost Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2012-05-16 22:17:37 -04:00
video fbdev updates for 3.5 2012-06-01 16:57:51 -07:00
virt
virtio virtio-mmio: Devices parameter parsing 2012-05-22 12:16:15 +09:30
vlynq
vme VME: Move API documentation to Documentation folder 2012-05-08 16:01:34 -07:00
w1 arm-soc: clock driver changes 2012-05-26 12:42:29 -07:00
watchdog watchdog: iTCO_wdt.c: fix printk format warnings 2012-05-30 08:16:48 +02:00
xen Merge branch 'x86-trampoline-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2012-05-29 20:14:53 -07:00
zorro
Kconfig Staging tree pull request for 3.5-rc1 2012-05-22 16:34:21 -07:00
Makefile arm-soc: driver specific updates 2012-05-26 12:22:27 -07:00