On Fri Sep 4 15:56:25 2026 +0500, Muhammad Haris Awan wrote:
> 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: [email protected]
> Closes: https://syzkaller.appspot.com/bug?extid=9123948aef13fe92d706
> Tested-by: [email protected]
> Signed-off-by: Muhammad Haris Awan <[email protected]>
> Signed-off-by: Hans Verkuil <[email protected]>
> [hverkuil: fixed the mangled patch]

Patch committed.

Thanks,
Hans Verkuil

 drivers/media/i2c/cx25840/cx25840-core.c | 40 +++++++++++++++-----------------
 1 file changed, 19 insertions(+), 21 deletions(-)

---

diff --git a/drivers/media/i2c/cx25840/cx25840-core.c 
b/drivers/media/i2c/cx25840/cx25840-core.c
index 8b7dd43ed208..159231b80daf 100644
--- a/drivers/media/i2c/cx25840/cx25840-core.c
+++ b/drivers/media/i2c/cx25840/cx25840-core.c
@@ -2289,29 +2289,27 @@ 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;
 }
_______________________________________________
linuxtv-commits mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to