]> git.itanic.dy.fi Git - linux-stable/commit
gpiolib: cdev: add gpio_device locking wrapper around gpio_ioctl()
authorKent Gibson <warthog618@gmail.com>
Thu, 21 Dec 2023 01:20:36 +0000 (09:20 +0800)
committerBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Thu, 21 Dec 2023 09:27:07 +0000 (10:27 +0100)
commit1d656bd259edb89dc1d9938ec5c5389867088546
treed44fb2a19a04fdea90885e519d452edfba908b2d
parentceb6a6f023fd3e8b07761ed900352ef574010bcb
gpiolib: cdev: add gpio_device locking wrapper around gpio_ioctl()

While the GPIO cdev gpio_ioctl() call is in progress, the kernel can
call gpiochip_remove() which will set gdev->chip to NULL, after which
any subsequent access will cause a crash.

gpio_ioctl() was overlooked by the previous fix to protect syscalls
(bdbbae241a04), so add protection for that.

Fixes: bdbbae241a04 ("gpiolib: protect the GPIO device against being dropped while in use by user-space")
Fixes: d7c51b47ac11 ("gpio: userspace ABI for reading/writing GPIO lines")
Fixes: 3c0d9c635ae2 ("gpiolib: cdev: support GPIO_V2_GET_LINE_IOCTL and GPIO_V2_LINE_GET_VALUES_IOCTL")
Fixes: aad955842d1c ("gpiolib: cdev: support GPIO_V2_GET_LINEINFO_IOCTL and GPIO_V2_GET_LINEINFO_WATCH_IOCTL")
Signed-off-by: Kent Gibson <warthog618@gmail.com>
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
drivers/gpio/gpiolib-cdev.c