[PATCH] media: cx25840: return -EOPNOTSUPP instead of WARN_ON in cx25840_init
From: Haris Awan
Date: Fri Sep 04 2026 - 08:50:32 EST
From: Muhammad Haris Awan <m.harisawan@xxxxxxxxxx>
Subject: [PATCH] media: cx25840: return -EOPNOTSUPP instead of WARN_ON
in cx25840_init
cx25840_init() implements generic mode video output configuration only
for cx2584x chips. For other chips, it triggers a WARN_ON(1) and returns
0, falsely indicating successful initialization while leaving the chip
unconfigured and marking generic_mode as true.
Using WARN_ON() for unsupported hardware variants is discouraged as it
triggers kernel warnings and syzbot alerts on faulty or unsupported
devices.
Return -EOPNOTSUPP early if the chip is not a cx2584x variant so callers
(such as cxusb_medion_register_analog_subdevs()) can handle the error
cleanly.
Reported-by: syzbot+9123948aef13fe92d706@xxxxxxxxxxxxxxxxxxxxxxxxx
Closes: https://syzkaller.appspot.com/bug?extid=9123948aef13fe92d706
Tested-by: syzbot+9123948aef13fe92d706@xxxxxxxxxxxxxxxxxxxxxxxxx
Signed-off-by: Muhammad Haris Awan <m.harisawan@xxxxxxxxxx>
---
drivers/media/i2c/cx25840/cx25840-core.c | 28 +++++++++++-------------
1 file changed, 13 insertions(+), 15 deletions(-)
diff --git a/drivers/media/i2c/cx25840/cx25840-core.c
b/drivers/media/i2c/cx25840/cx25840-core.c
index a8e21a28174f..6df912c9381b 100644
--- a/drivers/media/i2c/cx25840/cx25840-core.c
+++ b/drivers/media/i2c/cx25840/cx25840-core.c
@@ -2298,28 +2298,26 @@ static int cx25840_init(struct v4l2_subdev *sd, u32 val)
struct cx25840_state *state = to_state(sd);
+ if (!is_cx2584x(state))
+ return -EOPNOTSUPP;
+
state->generic_mode = true;
- if (is_cx2584x(state)) {
- /* set datasheet video output defaults */
- state->vid_config = CX25840_VCONFIG_FMT_BT656 |
- CX25840_VCONFIG_RES_8BIT |
- CX25840_VCONFIG_VBIRAW_DISABLED |
- CX25840_VCONFIG_ANCDATA_ENABLED |
- CX25840_VCONFIG_TASKBIT_ONE |
- CX25840_VCONFIG_ACTIVE_HORIZONTAL |
- CX25840_VCONFIG_VALID_NORMAL |
- CX25840_VCONFIG_HRESETW_NORMAL |
- CX25840_VCONFIG_CLKGATE_NONE |
- CX25840_VCONFIG_DCMODE_DWORDS |
- CX25840_VCONFIG_IDID0S_NORMAL |
- CX25840_VCONFIG_VIPCLAMP_DISABLED;
-
- /* add additional settings */
- cx25840_vconfig_add(state, val);
- } else {
- /* TODO: generic mode needs to be developed for other chips */
- WARN_ON(1);
- }
+ /* set datasheet video output defaults */
+ state->vid_config = CX25840_VCONFIG_FMT_BT656 |
+ CX25840_VCONFIG_RES_8BIT |
+ CX25840_VCONFIG_VBIRAW_DISABLED |
+ CX25840_VCONFIG_ANCDATA_ENABLED |
+ CX25840_VCONFIG_TASKBIT_ONE |
+ CX25840_VCONFIG_ACTIVE_HORIZONTAL |
+ CX25840_VCONFIG_VALID_NORMAL |
+ CX25840_VCONFIG_HRESETW_NORMAL |
+ CX25840_VCONFIG_CLKGATE_NONE |
+ CX25840_VCONFIG_DCMODE_DWORDS |
+ CX25840_VCONFIG_IDID0S_NORMAL |
+ CX25840_VCONFIG_VIPCLAMP_DISABLED;
+
+ /* add additional settings */
+ cx25840_vconfig_add(state, val);
return 0;
}
--