linux-stable/drivers/staging
Jared Kangas 80c968a04a staging: greybus: audio: fix loop cursor use after iteration
gbaudio_dapm_free_controls() iterates over widgets using
list_for_each_entry_safe(), which leaves the loop cursor pointing to a
meaningless structure if it completes a traversal of the list. The
cursor was set to NULL at the end of the loop body, but would be
overwritten by the final loop cursor update.

Because of this behavior, the widget could be non-null after the loop
even if the widget wasn't found, and the cleanup logic would treat the
pointer as a valid widget to free.

To fix this, introduce a temporary variable to act as the loop cursor
and copy it to a variable that can be accessed after the loop finishes.

This was detected with the help of Coccinelle.

Signed-off-by: Jared Kangas <kangas.jd@gmail.com>
Link: https://lore.kernel.org/r/20220605231806.720085-1-kangas.jd@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-06-06 08:08:03 +02:00
..
axis-fifo
board
clocking-wizard
emxx_udc
fbtft
fieldbus
fwserial
gdm724x
greybus staging: greybus: audio: fix loop cursor use after iteration 2022-06-06 08:08:03 +02:00
iio
ks7010
media
most
nvec
octeon
octeon-usb
olpc_dcon
pi433
qlge
r8188eu staging: r8188eu: Drop redundant memset overwritten by memcpy 2022-06-06 08:06:36 +02:00
rtl8192e
rtl8192u
rtl8712
rtl8723bs
rts5208
sm750fb
vc04_services staging: vchiq_arm: remove global 'vchiq_states' array 2022-06-06 08:03:46 +02:00
vme_user
vt6655
vt6656
wlan-ng
Kconfig
Makefile