media: dvb_vb2: limit reqbufs size to a sane value
authorMauro Carvalho Chehab <mchehab@s-opensource.com>
Thu, 28 Dec 2017 12:11:40 +0000 (07:11 -0500)
committerMauro Carvalho Chehab <mchehab@s-opensource.com>
Thu, 28 Dec 2017 16:17:27 +0000 (11:17 -0500)
It is not a good idea to let users to request a very high buffer
size.

So, add an upper limit.

Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
drivers/media/dvb-core/dvb_vb2.c

index 3631338..4223d33 100644 (file)
@@ -18,6 +18,8 @@
 #include "dvbdev.h"
 #include "dvb_vb2.h"
 
+#define DVB_V2_MAX_SIZE                (4096 * 188)
+
 static int vb2_debug;
 module_param(vb2_debug, int, 0644);
 
@@ -330,6 +332,12 @@ int dvb_vb2_reqbufs(struct dvb_vb2_ctx *ctx, struct dmx_requestbuffers *req)
 {
        int ret;
 
+       /* Adjust size to a sane value */
+       if (req->size > DVB_V2_MAX_SIZE)
+               req->size = DVB_V2_MAX_SIZE;
+
+       /* FIXME: round req->size to a 188 or 204 multiple */
+
        ctx->buf_siz = req->size;
        ctx->buf_cnt = req->count;
        ret = vb2_core_reqbufs(&ctx->vb_q, VB2_MEMORY_MMAP, &req->count);