diff options
| author | Chenyuan Yang <[email protected]> | 2025-01-11 18:09:51 +0000 |
|---|---|---|
| committer | Ilpo Järvinen <[email protected]> | 2025-01-14 16:30:33 +0000 |
| commit | 59616a91e5e74833b2008b56c66879857c616006 (patch) | |
| tree | e4bf0db2bee6c2dcfbd4788e1bcc3b31e8ff85dc /drivers/platform/surface/surface3-wmi.c | |
| parent | platform/x86: dell-uart-backlight: fix serdev race (diff) | |
| download | kernel-59616a91e5e74833b2008b56c66879857c616006.tar.gz kernel-59616a91e5e74833b2008b56c66879857c616006.zip | |
platform/x86: lenovo-yoga-tab2-pro-1380-fastcharger: fix serdev race
The yt2_1380_fc_serdev_probe() function calls 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
devm_serdev_device_open().
Note, serdev_device_set_baudrate() and serdev_device_set_flow_control()
calls should be after the devm_serdev_device_open() call.
Fixes: b2ed33e8d486 ("platform/x86: Add lenovo-yoga-tab2-pro-1380-fastcharger driver")
Signed-off-by: Chenyuan Yang <[email protected]>
Reviewed-by: Hans de Goede <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Reviewed-by: Ilpo Järvinen <[email protected]>
Signed-off-by: Ilpo Järvinen <[email protected]>
Diffstat (limited to 'drivers/platform/surface/surface3-wmi.c')
0 files changed, 0 insertions, 0 deletions
