Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c98300a0 authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab
Browse files

[media] mxl111sf: Don't use dynamic static allocation



Dynamic static allocation is evil, as Kernel stack is too low, and
compilation complains about it on some archs:
	drivers/media/usb/dvb-usb-v2/mxl111sf.c:74:1: warning: 'mxl111sf_ctrl_msg' uses dynamic stack allocation [enabled by default]
Instead, let's enforce a limit for the buffer to be the max size of
a control URB payload data (64 bytes).

Signed-off-by: default avatarMauro Carvalho Chehab <m.chehab@samsung.com>
Reviewed-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: default avatarMauro Carvalho Chehab <m.chehab@samsung.com>
parent 7760e148
Loading
Loading
Loading
Loading
+9 −1
Original line number Original line Diff line number Diff line
@@ -23,6 +23,9 @@
#include "lgdt3305.h"
#include "lgdt3305.h"
#include "lg2160.h"
#include "lg2160.h"


/* Max transfer size done by I2C transfer functions */
#define MAX_XFER_SIZE  64

int dvb_usb_mxl111sf_debug;
int dvb_usb_mxl111sf_debug;
module_param_named(debug, dvb_usb_mxl111sf_debug, int, 0644);
module_param_named(debug, dvb_usb_mxl111sf_debug, int, 0644);
MODULE_PARM_DESC(debug, "set debugging level "
MODULE_PARM_DESC(debug, "set debugging level "
@@ -57,7 +60,12 @@ int mxl111sf_ctrl_msg(struct dvb_usb_device *d,
{
{
	int wo = (rbuf == NULL || rlen == 0); /* write-only */
	int wo = (rbuf == NULL || rlen == 0); /* write-only */
	int ret;
	int ret;
	u8 sndbuf[1+wlen];
	u8 sndbuf[MAX_XFER_SIZE];

	if (1 + wlen > sizeof(sndbuf)) {
		pr_warn("%s: len=%d is too big!\n", __func__, wlen);
		return -EOPNOTSUPP;
	}


	pr_debug("%s(wlen = %d, rlen = %d)\n", __func__, wlen, rlen);
	pr_debug("%s(wlen = %d, rlen = %d)\n", __func__, wlen, rlen);