[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <lsq.1503061993.167765409@decadent.org.uk>
Date: Fri, 18 Aug 2017 14:13:13 +0100
From: Ben Hutchings <ben@...adent.org.uk>
To: linux-kernel@...r.kernel.org, stable@...r.kernel.org
CC: akpm@...ux-foundation.org, "Josh Boyer" <jwboyer@...hat.com>,
"Mauro Carvalho Chehab" <mchehab@...hat.com>
Subject: [PATCH 3.2 31/59] [media] ttusb2: Don't use stack variables for DMA
3.2.92-rc1 review patch. If anyone has any objections, please let me know.
------------------
From: Josh Boyer <jwboyer@...hat.com>
commit ff17999184ed13829bc14c3be412d980173dff40 upstream.
The ttusb2_msg function uses on-stack variables to submit commands to
dvb_usb_generic. This eventually gets to the DMA api layer and will throw a
traceback if the debugging options are set.
This allocates the temporary buffer variables with kzalloc instead.
Fixes https://bugzilla.redhat.com/show_bug.cgi?id=734506
Signed-off-by: Josh Boyer <jwboyer@...hat.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@...hat.com>
Signed-off-by: Ben Hutchings <ben@...adent.org.uk>
---
drivers/media/dvb/dvb-usb/ttusb2.c | 17 +++++++++++++++--
1 file changed, 15 insertions(+), 2 deletions(-)
--- a/drivers/media/dvb/dvb-usb/ttusb2.c
+++ b/drivers/media/dvb/dvb-usb/ttusb2.c
@@ -75,10 +75,18 @@ static int ttusb2_msg(struct dvb_usb_dev
u8 *wbuf, int wlen, u8 *rbuf, int rlen)
{
struct ttusb2_state *st = d->priv;
- u8 s[wlen+4],r[64] = { 0 };
+ u8 *s, *r = NULL;
int ret = 0;
- memset(s,0,wlen+4);
+ s = kzalloc(wlen+4, GFP_KERNEL);
+ if (!s)
+ return -ENOMEM;
+
+ r = kzalloc(64, GFP_KERNEL);
+ if (!r) {
+ kfree(s);
+ return -ENOMEM;
+ }
s[0] = 0xaa;
s[1] = ++st->id;
@@ -94,12 +102,17 @@ static int ttusb2_msg(struct dvb_usb_dev
r[2] != cmd ||
(rlen > 0 && r[3] != rlen)) {
warn("there might have been an error during control message transfer. (rlen = %d, was %d)",rlen,r[3]);
+ kfree(s);
+ kfree(r);
return -EIO;
}
if (rlen > 0)
memcpy(rbuf, &r[4], rlen);
+ kfree(s);
+ kfree(r);
+
return 0;
}
Powered by blists - more mailing lists