]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
media: rc: streamzap: Error handling in probe
authorOliver Neukum <oneukum@suse.com>
Wed, 11 Feb 2026 18:06:21 +0000 (19:06 +0100)
committerHans Verkuil <hverkuil+cisco@kernel.org>
Tue, 17 Mar 2026 13:43:56 +0000 (14:43 +0100)
If submitting the URB fails, the device will be unusable.
Probe() must fail.

Fixes: 7a569f524dd36 ("V4L/DVB: IR/streamzap: functional in-kernel decoding")
Cc: stable@vger.kernel.org
Signed-off-by: Oliver Neukum <oneukum@suse.com>
Signed-off-by: Sean Young <sean@mess.org>
Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
drivers/media/rc/streamzap.c

index 7103da57c19f1f6454accaf0be215a560977cdc6..307985d74fe8a2a05670cc364fd928d69c4b0024 100644 (file)
@@ -219,9 +219,8 @@ static void streamzap_callback(struct urb *urb)
        case -ESHUTDOWN:
                /*
                 * this urb is terminated, clean up.
-                * sz might already be invalid at this point
                 */
-               dev_err(sz->dev, "urb terminated, status: %d\n", urb->status);
+               dev_dbg(sz->dev, "urb terminated, status: %d\n", urb->status);
                return;
        default:
                break;
@@ -358,11 +357,16 @@ static int streamzap_probe(struct usb_interface *intf,
 
        usb_set_intfdata(intf, sz);
 
-       if (usb_submit_urb(sz->urb_in, GFP_ATOMIC))
+       retval = usb_submit_urb(sz->urb_in, GFP_ATOMIC);
+       if (retval < 0) {
                dev_err(sz->dev, "urb submit failed\n");
+               goto rc_submit_fail;
+       }
 
        return 0;
-
+rc_submit_fail:
+       rc_free_device(sz->rdev);
+       usb_set_intfdata(intf, NULL);
 rc_dev_fail:
        usb_free_urb(sz->urb_in);
 free_buf_in: