linux/drivers/w1/masters
Chenyuan Yang 0dd6770a72 w1: fix NULL pointer dereference in probe
The w1_uart_probe() function calls w1_uart_serdev_open() (which includes
devm_serdev_device_open()) before setting the client ops via
serdev_device_set_client_ops(). This ordering can trigger a NULL pointer
dereference in the serdev controller's receive_buf handler, as it assumes
serdev->ops is valid when SERPORT_ACTIVE is set.

This is similar to the issue fixed in commit 5e700b384e
("platform/chrome: cros_ec_uart: properly fix race condition") where
devm_serdev_device_open() was called before fully initializing the
device.

Fix the race by ensuring client ops are set before enabling the port via
w1_uart_serdev_open().

Fixes: a3c0880436 ("w1: add UART w1 bus driver")
Signed-off-by: Chenyuan Yang <chenyuan0y@gmail.com>
Acked-by: Christoph Winklhofer <cj.winklhofer@gmail.com>
Link: https://lore.kernel.org/r/20250111181803.2283611-1-chenyuan0y@gmail.com
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
2025-02-03 12:52:49 +01:00
..
amd_axi_w1.c Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
ds2482.c w1: ds2482: Fix datasheet URL 2024-12-03 15:53:29 +01:00
ds2490.c w1: ds2490: support block sizes larger than 128 bytes in ds_read_block 2023-12-20 09:25:23 +01:00
Kconfig w1: add UART w1 bus driver 2024-02-15 15:02:33 +01:00
Makefile w1: add UART w1 bus driver 2024-02-15 15:02:33 +01:00
matrox_w1.c w1: matrox: remove unnecessary ENOMEM messages 2023-04-20 14:15:07 +02:00
mxc_w1.c Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
omap_hdq.c Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
sgi_w1.c Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
w1-gpio.c Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
w1-uart.c w1: fix NULL pointer dereference in probe 2025-02-03 12:52:49 +01:00