Hi Sean, Thank you for the changes, It's better like this, I will test it. Don't you think that a much better way would be to make the kalloc directly inside dvb_usb_generic_rw instead of changing each call of it? Are you sure there are no other mistake somewhere else ? Laurent 2017-11-11 21:55 GMT+01:00 Sean Young <sean@xxxxxxxx>: > Hi Laurant, > > On Sat, Nov 11, 2017 at 08:06:38PM +0100, Laurent Caumont wrote: >> Hi Sean, >> >> I hope this one will be okay. > > There is a memory leak in there, and there is no reason to have to kmallocs > for this function. Please would you mind testing this version? > > Please note that there were other issues like whitespace which I've fixed > up. > > Thanks, > Sean > ---- > From 8362bc3e95016944b173c3866c103fcbc2587b6d Mon Sep 17 00:00:00 2001 > From: Laurent Caumont <lcaumont2@xxxxxxxxx> > Date: Sat, 11 Nov 2017 18:44:46 +0100 > Subject: [PATCH] media: dvb: i2c transfers over usb cannot be done from stack > > Cc: stable@xxxxxxxxxxxxxxx > Signed-off-by: Laurent Caumont <lcaumont2@xxxxxxxxx> > Signed-off-by: Sean Young <sean@xxxxxxxx> > --- > drivers/media/usb/dvb-usb/dibusb-common.c | 16 ++++++++++++++-- > 1 file changed, 14 insertions(+), 2 deletions(-) > > diff --git a/drivers/media/usb/dvb-usb/dibusb-common.c b/drivers/media/usb/dvb-usb/dibusb-common.c > index 8207e6900656..bcacb0f22028 100644 > --- a/drivers/media/usb/dvb-usb/dibusb-common.c > +++ b/drivers/media/usb/dvb-usb/dibusb-common.c > @@ -223,8 +223,20 @@ EXPORT_SYMBOL(dibusb_i2c_algo); > > int dibusb_read_eeprom_byte(struct dvb_usb_device *d, u8 offs, u8 *val) > { > - u8 wbuf[1] = { offs }; > - return dibusb_i2c_msg(d, 0x50, wbuf, 1, val, 1); > + u8 *buf; > + int rc; > + > + buf = kmalloc(2, GFP_KERNEL); > + if (!buf) > + return -ENOMEM; > + > + buf[0] = offs; > + > + rc = dibusb_i2c_msg(d, 0x50, &buf[0], 1, &buf[1], 1); > + *val = buf[1]; > + kfree(buf); > + > + return rc; > } > EXPORT_SYMBOL(dibusb_read_eeprom_byte); > > -- > 2.13.6 >