Re: 'LITE-ON USB2.0 DVB-T Tune' driver crash with kernel 4.13 / ubuntu 17.10

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Mauro,

I could send you a patch but my git doesn't see the modification I
made, so it's unable to generate a patch.
I don't know if it's a git issue on ubunu 17.10 or if it's the way the
repository was created.

Laurent

2017-11-07 11:42 GMT+01:00 Mauro Carvalho Chehab <mchehab@xxxxxxxxxxxxxxxx>:
> Hi Sean/Laurent,
>
> Care sending me a final version of the patch?
>
> Thanks!
> Mauro
>
> Em Mon, 30 Oct 2017 21:59:34 +0100
> Laurent Caumont <lcaumont2@xxxxxxxxx> escreveu:
>
>> Hi Sean,
>>
>> I found the problem. The read buffer needs to be allocated with kmalloc too.
>>
>> int dibusb_read_eeprom_byte(struct dvb_usb_device *d, u8 offs, u8 *val)
>> {
>>           u8 *wbuf;
>>           u8 *rbuf;
>>           int rc;
>>
>>           rbuf = kmalloc(1, GFP_KERNEL);
>>           if (!rbuf)
>>             return -ENOMEM;
>>
>>           wbuf = kmalloc(1, GFP_KERNEL);
>>           if (!wbuf)
>>             return -ENOMEM;
>>
>>          *wbuf = offs;
>>
>>          rc = dibusb_i2c_msg(d, 0x50, wbuf, 1, rbuf, 1);
>>          kfree(wbuf);
>>          *val = *rbuf;
>>          kfree(rbuf);
>>
>>         return rc;
>> }
>>
>> It works now.
>> Please update the code in the main branch for futur versions.
>> Thanks.
>> Regards,
>> Laurent
>>
>> 2017-10-29 20:31 GMT+01:00 Sean Young <sean@xxxxxxxx>:
>> > On Sun, Oct 29, 2017 at 06:54:28PM +0100, Laurent Caumont wrote:
>> >> Hi Sean,
>> >>
>> >> I recompiled the modules by following the
>> >> https://www.linuxtv.org/wiki/index.php/How_to_Obtain,_Build_and_Install_V4L-DVB_Device_Drivers
>> >> page and applied the patch.
>> >> But I still have problems (see below). It doesn't seem to be the same callstack.
>> >> Is it the right way to get the fix ?
>> >
>> > Yes, it's the right way to get the fix. However, you've hit a new problem
>> > of a similar making. Please can you try with this patch as well:
>> >
>> > Thanks
>> > Sean
>> > ---
>> > From 84efb0bf72ae5d9183f25d69d95fb9ad9b9bc644 Mon Sep 17 00:00:00 2001
>> > From: Sean Young <sean@xxxxxxxx>
>> > Date: Sun, 29 Oct 2017 19:28:32 +0000
>> > Subject: [PATCH] media: dibusb: don't do DMA on stack
>> >
>> > The USB control messages require DMA to work. We cannot pass
>> > a stack-allocated buffer, as it is not warranted that the
>> > stack would be into a DMA enabled area.
>> >
>> > Signed-off-by: Sean Young <sean@xxxxxxxx>
>> > ---
>> >  drivers/media/usb/dvb-usb/dibusb-common.c | 14 ++++++++++++--
>> >  1 file changed, 12 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..18c6e454b1b7 100644
>> > --- a/drivers/media/usb/dvb-usb/dibusb-common.c
>> > +++ b/drivers/media/usb/dvb-usb/dibusb-common.c
>> > @@ -223,8 +223,18 @@ 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 *wbuf;
>> > +       int rc;
>> > +
>> > +       wbuf = kmalloc(1, GFP_KERNEL);
>> > +       if (!wbuf)
>> > +               return -ENOMEM;
>> > +
>> > +       *wbuf = offs;
>> > +       rc = dibusb_i2c_msg(d, 0x50, wbuf, 1, val, 1);
>> > +       kfree(wbuf);
>> > +
>> > +       return rc;
>> >  }
>> >  EXPORT_SYMBOL(dibusb_read_eeprom_byte);
>> >
>> > --
>> > 2.13.6
>> >
>
>
>
> Thanks,
> Mauro



[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux