media: bttv: start_streaming should return a proper error code
authorHans Verkuil <hverkuil-cisco@xs4all.nl>
Thu, 30 Nov 2023 12:58:10 +0000 (13:58 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 25 Jan 2024 23:35:34 +0000 (15:35 -0800)
[ Upstream commit 0d75bb6ae127f5e3fd0e2239714908fd2038193d ]

The start_streaming callback returned 0 or 1 instead of a
proper error code. Fix that.

Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Fixes: b7ec3212a73a ("media: bttv: convert to vb2")
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/media/pci/bt8xx/bttv-driver.c
drivers/media/pci/bt8xx/bttv-vbi.c

index 09a193b..8e8c9da 100644 (file)
@@ -1536,13 +1536,11 @@ static void buf_cleanup(struct vb2_buffer *vb)
 
 static int start_streaming(struct vb2_queue *q, unsigned int count)
 {
-       int ret = 1;
        int seqnr = 0;
        struct bttv_buffer *buf;
        struct bttv *btv = vb2_get_drv_priv(q);
 
-       ret = check_alloc_btres_lock(btv, RESOURCE_VIDEO_STREAM);
-       if (ret == 0) {
+       if (!check_alloc_btres_lock(btv, RESOURCE_VIDEO_STREAM)) {
                if (btv->field_count)
                        seqnr++;
                while (!list_empty(&btv->capture)) {
@@ -1553,7 +1551,7 @@ static int start_streaming(struct vb2_queue *q, unsigned int count)
                        vb2_buffer_done(&buf->vbuf.vb2_buf,
                                        VB2_BUF_STATE_QUEUED);
                }
-               return !ret;
+               return -EBUSY;
        }
        if (!vb2_is_streaming(&btv->vbiq)) {
                init_irqreg(btv);
index ab213e5..e489a3a 100644 (file)
@@ -123,14 +123,12 @@ static void buf_cleanup_vbi(struct vb2_buffer *vb)
 
 static int start_streaming_vbi(struct vb2_queue *q, unsigned int count)
 {
-       int ret;
        int seqnr = 0;
        struct bttv_buffer *buf;
        struct bttv *btv = vb2_get_drv_priv(q);
 
        btv->framedrop = 0;
-       ret = check_alloc_btres_lock(btv, RESOURCE_VBI);
-       if (ret == 0) {
+       if (!check_alloc_btres_lock(btv, RESOURCE_VBI)) {
                if (btv->field_count)
                        seqnr++;
                while (!list_empty(&btv->vcapture)) {
@@ -141,13 +139,13 @@ static int start_streaming_vbi(struct vb2_queue *q, unsigned int count)
                        vb2_buffer_done(&buf->vbuf.vb2_buf,
                                        VB2_BUF_STATE_QUEUED);
                }
-               return !ret;
+               return -EBUSY;
        }
        if (!vb2_is_streaming(&btv->capq)) {
                init_irqreg(btv);
                btv->field_count = 0;
        }
-       return !ret;
+       return 0;
 }
 
 static void stop_streaming_vbi(struct vb2_queue *q)