linux-stable/drivers/staging
Padmanabha Srinivasaiah 0cea730cac staging: vc04_services: Fix RCU dereference check
In service_callback path RCU dereferenced pointer struct vchiq_service
need to be accessed inside rcu read-critical section.

Also userdata/user_service part of vchiq_service is accessed around
different synchronization mechanism, getting an extra reference to a
pointer keeps sematics simpler and avoids prolonged graceperiod.

Accessing vchiq_service with rcu_read_[lock/unlock] fixes below issue.

[   32.201659] =============================
[   32.201664] WARNING: suspicious RCU usage
[   32.201670] 5.15.11-rt24-v8+ #3 Not tainted
[   32.201680] -----------------------------
[   32.201685] drivers/staging/vc04_services/interface/vchiq_arm/vchiq_core.h:529 suspicious rcu_dereference_check() usage!
[   32.201695]
[   32.201695] other info that might help us debug this:
[   32.201695]
[   32.201700]
[   32.201700] rcu_scheduler_active = 2, debug_locks = 1
[   32.201708] no locks held by vchiq-slot/0/98.
[   32.201715]
[   32.201715] stack backtrace:
[   32.201723] CPU: 1 PID: 98 Comm: vchiq-slot/0 Not tainted 5.15.11-rt24-v8+ #3
[   32.201733] Hardware name: Raspberry Pi 4 Model B Rev 1.4 (DT)
[   32.201739] Call trace:
[   32.201742]  dump_backtrace+0x0/0x1b8
[   32.201772]  show_stack+0x20/0x30
[   32.201784]  dump_stack_lvl+0x8c/0xb8
[   32.201799]  dump_stack+0x18/0x34
[   32.201808]  lockdep_rcu_suspicious+0xe4/0xf8
[   32.201817]  service_callback+0x124/0x400
[   32.201830]  slot_handler_func+0xf60/0x1e20
[   32.201839]  kthread+0x19c/0x1a8
[   32.201849]  ret_from_fork+0x10/0x20

Tested-by: Stefan Wahren <stefan.wahren@i2se.com>
Signed-off-by: Padmanabha Srinivasaiah <treasure4paddy@gmail.com>
Link: https://lore.kernel.org/r/20211231195406.5479-1-treasure4paddy@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-01-25 16:36:34 +01:00
..
android
axis-fifo staging: axis-fifo: Use platform_get_irq() to get the interrupt 2021-12-30 11:54:56 +01:00
board
clocking-wizard
emxx_udc
fbtft staging: fbtft: sh1106: use new macro FBTFT_REGISTER_SPI_DRIVER 2021-12-03 15:05:12 +01:00
fieldbus staging: fieldbus: anybus: reframe comment to avoid warning 2021-10-30 11:12:17 +02:00
fwserial
gdm724x staging: use eth_hw_addr_set() in orphan drivers 2021-10-20 19:33:59 +02:00
greybus staging: greybus: audio: Check null pointer 2022-01-06 14:46:11 +01:00
gs_fpgaboot
iio staging: iio: ad9832: convert probe to device-managed 2021-10-17 11:05:54 +01:00
ks7010 staging: use eth_hw_addr_set() for dev->addr_len cases 2021-10-20 19:33:58 +02:00
media media updates for v5.17-rc1 2022-01-12 10:43:08 -08:00
most staging: most: dim2: use consistent routine naming 2021-12-28 17:10:13 +01:00
mt7621-dts staging: mt7621-dts: remove 'gdma' and 'hsdma' nodes 2021-11-15 10:29:12 +01:00
nvec
octeon Staging driver update for 5.16-rc1 2021-11-04 07:56:22 -07:00
octeon-usb
olpc_dcon
pi433 staging: pi433: add comment to rx_lock mutex definition 2022-01-06 15:00:29 +01:00
qlge Staging driver update for 5.16-rc1 2021-11-04 07:56:22 -07:00
r8188eu staging: r8188eu: rename camelcase variable uintPeerChannel 2022-01-06 15:15:04 +01:00
rtl8192e Staging drivers update for 5.17-rc1 2022-01-12 11:18:49 -08:00
rtl8192u staging: rtl8192u: remove some repeated words in some comments 2021-12-20 17:47:22 +01:00
rtl8712 staging: rtl8712: Fix alignment checks with flipped condition 2021-12-09 08:57:22 +01:00
rtl8723bs staging: rtl8723bs: removed unused if blocks 2021-12-28 17:08:07 +01:00
rts5208 exit: Rename complete_and_exit to kthread_complete_and_exit 2021-12-13 12:04:45 -06:00
sm750fb
unisys staging: unisys: visornic: removed a blank line at the end of function 2021-11-25 17:38:53 +01:00
vc04_services staging: vc04_services: Fix RCU dereference check 2022-01-25 16:36:34 +01:00
vme
vt6655 staging: vt6655: drop off byRxMode var in device.h 2021-12-28 17:10:47 +01:00
vt6656
wfx
wlan-ng staging: wlan-ng: Removed unused comments 2021-11-15 10:02:05 +01:00
Kconfig Merge 5.16-rc3 into staging-next 2021-11-29 08:03:05 +01:00
Makefile Merge 5.16-rc3 into staging-next 2021-11-29 08:03:05 +01:00