]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
media: em28xx-video: fix missing res_free() on init_usb_xfer failure
authorHaoxiang Li <lihaoxiang@isrc.iscas.ac.cn>
Tue, 14 Apr 2026 08:32:39 +0000 (16:32 +0800)
committerHans Verkuil <hverkuil+cisco@kernel.org>
Wed, 6 May 2026 07:05:56 +0000 (09:05 +0200)
res_get() is called before em28xx_init_usb_xfer(), but the error
path of em28xx_init_usb_xfer() does not release the resource,
leading to a persistent busy state.

Signed-off-by: Haoxiang Li <lihaoxiang@isrc.iscas.ac.cn>
Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
drivers/media/usb/em28xx/em28xx-video.c

index 4a0ce9c5ee4b4abde681cc373e1c6db2f3b3af70..da0422c65e5f45aba712fcf007eece19c8ad0bf9 100644 (file)
@@ -1248,8 +1248,10 @@ int em28xx_start_analog_streaming(struct vb2_queue *vq, unsigned int count)
                                          dev->max_pkt_size,
                                          dev->packet_multiplier,
                                          em28xx_urb_data_copy);
-               if (rc < 0)
+               if (rc < 0) {
+                       res_free(dev, vq->type);
                        return rc;
+               }
 
                /*
                 * djh: it's not clear whether this code is still needed.  I'm