FAILED: patch "[PATCH] media: dvb_vb2: fix possible out of bound access" failed to apply to 4.19-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 4.19-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
Possible dependencies:
37238699073e ("media: dvb_vb2: fix possible out of bound access") fd89e0bb6ebf ("media: videobuf2-core: integrate with media requests") 55028695c3bb ("media: vb2: drop VB2_BUF_STATE_PREPARED, use bool prepared/synced instead") db6e8d57e2cd ("media: vb2: store userspace data in vb2_v4l2_buffer") 0af4e80bf24a ("media: videobuf2-v4l2: replace if by switch in __fill_vb2_buffer()") 5f89ec80f1e0 ("media: videobuf2-v4l2: move __fill_v4l2_buffer() function")
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 37238699073e7e93f05517e529661151173cd458 Mon Sep 17 00:00:00 2001
From: Hangyu Hua <[email protected]>
Date: Thu, 19 May 2022 03:17:43 +0100
Subject: [PATCH] media: dvb_vb2: fix possible out of bound access
vb2_core_qbuf and vb2_core_querybuf don't check the range of b->index controlled by the user.
Fix this by adding range checking code before using them.
drivers/media/dvb-core/dvb_vb2.c +11 -0
@@ -354,6 +354,12 @@ int dvb_vb2_reqbufs(struct dvb_vb2_ctx *ctx, struct dmx_requestbuffers *req)int dvb_vb2_querybuf (struct dvb_vb2_ctx *ctx,struct dmx_buffer *b) { +struct vb2_queue *q = &ctx->vb_q; + +if (b->index >= q->num_buffers) { +dprintk (1 ,"[%s] buffer index out of range\n" , ctx->name); +return -EINVAL ; + }vb2_core_querybuf (&ctx->vb_q, b->index, b);dprintk (3 ,"[%s] index=%d\n" , ctx->name, b->index);return 0 ;
@@ -378,8 +384,13 @@ int dvb_vb2_expbuf(struct dvb_vb2_ctx *ctx, struct dmx_exportbuffer *exp)int dvb_vb2_qbuf (struct dvb_vb2_ctx *ctx,struct dmx_buffer *b) { +struct vb2_queue *q = &ctx->vb_q;int ret; +if (b->index >= q->num_buffers) { +dprintk (1 ,"[%s] buffer index out of range\n" , ctx->name); +return -EINVAL ; + } ret =vb2_core_qbuf (&ctx->vb_q, b->index, b,NULL );if (ret) { dprintk(1, "[%s] index=%d errno=%d\n", ctx->name,