linux/drivers/staging
Liam Mark bcb8e0a236 staging: android: ion: Support cpu access during dma_buf_detach
[ Upstream commit 31eb79db42 ]

Often userspace doesn't know when the kernel will be calling dma_buf_detach
on the buffer.
If userpace starts its CPU access at the same time as the sg list is being
freed it could end up accessing the sg list after it has been freed.

Thread A				Thread B
- DMA_BUF_IOCTL_SYNC IOCT
 - ion_dma_buf_begin_cpu_access
  - list_for_each_entry
					- ion_dma_buf_detatch
					 - free_duped_table
   - dma_sync_sg_for_cpu

Fix this by getting the ion_buffer lock before freeing the sg table memory.

Fixes: 2a55e7b5e5 ("staging: android: ion: Call dma_map_sg for syncing and mapping")
Signed-off-by: Liam Mark <lmark@codeaurora.org>
Acked-by: Laura Abbott <labbott@redhat.com>
Acked-by: Andrew F. Davis <afd@ti.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2019-03-05 17:58:50 +01:00
..
android staging: android: ion: Support cpu access during dma_buf_detach 2019-03-05 17:58:50 +01:00
axis-fifo staging: fix platform_no_drv_owner.cocci warnings 2018-07-29 14:40:41 +02:00
board
clocking-wizard staging: clocking-wizard: prefer 'help' in Kconfig 2018-06-17 09:05:13 +02:00
comedi staging: comedi: ni_mio_common: fix subdevice flags for PFI subdevice 2018-08-08 14:11:19 +02:00
dgnc staging: dgnc: dgnc_tty.c: Avoid '(' at the end of line 2018-07-24 14:00:54 +02:00
emxx_udc
erofs staging: erofs: unzip_vle_lz4.c,utils.c: rectify BUG_ONs 2019-02-27 10:09:02 +01:00
fbtft staging/fbtft: Update TODO and mailing lists 2018-09-10 10:39:19 +02:00
fsl-dpaa2 dpaa2-ptp: defer probe when portal allocation failed 2019-02-12 19:46:59 +01:00
fwserial tty: replace ->proc_fops with ->proc_show 2018-05-16 07:24:30 +02:00
gasket staging: gasket: TODO: re-implement using UIO 2018-09-10 18:08:06 +02:00
gdm724x staging: gdm724x: redundant variables idProduct and idVendor 2018-07-11 13:12:34 +02:00
goldfish staging: goldfish: add a blank line into struct goldfish_audio 2018-07-12 21:49:24 +02:00
greybus treewide: Use array_size() in vmalloc() 2018-06-12 16:19:22 -07:00
gs_fpgaboot
iio staging: iio: ad7780: update voltage on read 2019-02-12 19:47:00 +01:00
ks7010 Merge 4.18-rc7 into staging-next 2018-07-30 10:13:15 +02:00
media media: staging/media/mt9t031/Kconfig: remove bogus entry 2018-09-12 06:44:01 -04:00
most staging: most: use format specifier "%s" in snprintf 2018-12-05 19:32:12 +01:00
mt29f_spinand
mt7621-dma staging: mt7621-dma: fix potentially dereferencing uninitialized 'tx_desc' 2018-12-05 19:32:12 +01:00
mt7621-dts staging: mt7621-dts: add pcie controller port registers 2018-08-08 14:08:41 +02:00
mt7621-eth drivers/staging/mt7621-eth: Use dma_zalloc_coherent to replace dma_alloc_coherent+memset 2018-08-01 20:00:53 +02:00
mt7621-mmc staging: mt7621-mmc: Use BIT macro instead of explicit shifting in board.h 2018-07-29 10:08:02 +02:00
mt7621-pci staging: mt7621-pci: remove remaining pci_legacy dependant code 2018-08-08 14:08:41 +02:00
mt7621-pinctrl staging: mt7621-pinctrl: fix uninitialized variable ngroups 2018-12-05 19:32:12 +01:00
mt7621-spi staging: mt7621-spi: Remove unnecessary braces {} from single statement if block. 2018-06-17 09:05:12 +02:00
netlogic net: Add generic ndo_select_queue functions 2018-07-09 13:15:34 -07:00
nvec
octeon
octeon-usb Staging: octeon-usb: Adding SPDX license identifier 2018-07-27 17:18:14 +02:00
olpc_dcon staging: olpc_dcon: add a missing dependency 2018-12-19 19:19:49 +01:00
pi433 staging: pi433: fix potential null dereference 2019-02-12 19:47:02 +01:00
rtl8188eu staging: rtl8188eu: Add device code for D-Link DWA-121 rev B1 2019-01-31 08:14:36 +01:00
rtl8192e staging: rtl8192e: ieee80211: Convert from ahash to shash 2018-07-29 10:05:23 +02:00
rtl8192u staging:rtl8192u: Remove unused macro definitions - Style 2018-08-08 14:27:03 +02:00
rtl8712 staging: rtl8712: Fix possible buffer overrun 2018-12-13 09:16:20 +01:00
rtl8723bs staging: rtl8723bs: Fix build error with Clang when inlining is disabled 2019-03-05 17:58:49 +01:00
rtlwifi Staging/IIO patches for 4.19-rc1 2018-08-18 11:00:00 -07:00
rts5208 staging: rts5208: xd.c fixed a brace coding style issue 2018-07-21 08:54:11 +02:00
sm750fb staging: sm750fb: remove redundant pointer 'output' 2018-07-11 14:45:54 +02:00
speakup staging: speakup: fix tty-operation NULL derefs 2019-02-12 19:47:25 +01:00
unisys treewide: kzalloc() -> kcalloc() 2018-06-12 16:19:22 -07:00
vboxvideo staging: vboxvideo: Change address of scanout buffer on page-flip 2018-09-11 18:39:54 +02:00
vc04_services staging: vchiq_arm: fix compat VCHIQ_IOC_AWAIT_COMPLETION 2018-12-05 19:32:12 +01:00
vme
vt6655 staging: vt6655: remove some redundant variables 2018-07-11 14:47:08 +02:00
vt6656 staging: vt6655: remove some redundant variables 2018-07-11 14:47:08 +02:00
wilc1000 staging: wilc1000: fix missing read_write setting when reading data 2019-01-09 17:38:40 +01:00
wlan-ng staging: wlan-ng: remove unused definitions from p80211types.h 2018-08-05 16:12:42 +02:00
xgifb
Kconfig ARM: SoC driver updates 2018-08-23 13:52:46 -07:00
Makefile ARM: SoC driver updates 2018-08-23 13:52:46 -07:00