summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEthan Tidmore <ethantidmore06@gmail.com>2026-03-06 21:32:45 -0600
committerLuca Ceresoli <luca.ceresoli@bootlin.com>2026-03-17 18:04:08 +0100
commita469749640fbcd2f49ab05fb83cca3da07f35ee3 (patch)
treef932c0b9221eacdd180baa9c6e62fea0b575259a
parent27a39e135f5c1ceaf73e64648eccdb42b751d5c7 (diff)
downloadlinux-a469749640fbcd2f49ab05fb83cca3da07f35ee3.tar.gz
linux-a469749640fbcd2f49ab05fb83cca3da07f35ee3.zip
drm/bridge: waveshare-dsi: Fix signedness bug
The function drm_of_get_data_lanes_count_ep() returns negative error codes and dsi->lanes is an unsigned integer, so the check (dsi->lanes < 0) is always impossible. Make the return value of drm_of_get_data_lanes_count_ep() be assigned to ret, check for error, and then assign dsi->lanes to ret. Detected by Smatch: drivers/gpu/drm/bridge/waveshare-dsi.c:70 ws_bridge_attach_dsi() warn: unsigned 'dsi->lanes' is never less than zero. Reported-by: kernel test robot <lkp@intel.com> Closes: https://lore.kernel.org/oe-kbuild-all/202603060341.hNj0pl9L-lkp@intel.com/ Fixes: fca11428425e9 ("drm/bridge: waveshare-dsi: Add support for 1..4 DSI data lanes") Signed-off-by: Ethan Tidmore <ethantidmore06@gmail.com> Reviewed-by: Luca Ceresoli <luca.ceresoli@bootlin.com> Reviewed-by: Marek Vasut <marek.vasut+renesas@mailbox.org> Link: https://patch.msgid.link/20260307033245.71666-1-ethantidmore06@gmail.com Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
-rw-r--r--drivers/gpu/drm/bridge/waveshare-dsi.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/gpu/drm/bridge/waveshare-dsi.c b/drivers/gpu/drm/bridge/waveshare-dsi.c
index 0497c7ecbc7a..32d40414adb9 100644
--- a/drivers/gpu/drm/bridge/waveshare-dsi.c
+++ b/drivers/gpu/drm/bridge/waveshare-dsi.c
@@ -66,11 +66,13 @@ static int ws_bridge_attach_dsi(struct ws_bridge *ws)
dsi->mode_flags = MIPI_DSI_MODE_VIDEO_HSE | MIPI_DSI_MODE_VIDEO |
MIPI_DSI_CLOCK_NON_CONTINUOUS;
dsi->format = MIPI_DSI_FMT_RGB888;
- dsi->lanes = drm_of_get_data_lanes_count_ep(dev->of_node, 0, 0, 1, 4);
- if (dsi->lanes < 0) {
+ ret = drm_of_get_data_lanes_count_ep(dev->of_node, 0, 0, 1, 4);
+ if (ret < 0) {
dev_warn(dev, "Invalid or missing DSI lane count %d, falling back to 2 lanes\n",
- dsi->lanes);
+ ret);
dsi->lanes = 2; /* Old DT backward compatibility */
+ } else {
+ dsi->lanes = ret;
}
ret = devm_mipi_dsi_attach(dev, dsi);