diff options
| author | Chenyuan Yang <[email protected]> | 2025-01-11 18:18:03 +0000 |
|---|---|---|
| committer | Krzysztof Kozlowski <[email protected]> | 2025-02-03 11:52:49 +0000 |
| commit | 0dd6770a72f138dabea9eae87f3da6ffa68f0d06 (patch) | |
| tree | bfdbae398144b7a580400dcb9cd3117aa3d6960f /samples/rust/rust_misc_device.rs | |
| parent | Linux 6.14-rc1 (diff) | |
| download | kernel-0dd6770a72f138dabea9eae87f3da6ffa68f0d06.tar.gz kernel-0dd6770a72f138dabea9eae87f3da6ffa68f0d06.zip | |
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 5e700b384ec1
("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: a3c08804364e ("w1: add UART w1 bus driver")
Signed-off-by: Chenyuan Yang <[email protected]>
Acked-by: Christoph Winklhofer <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Krzysztof Kozlowski <[email protected]>
Diffstat (limited to 'samples/rust/rust_misc_device.rs')
0 files changed, 0 insertions, 0 deletions
