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]

 



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




[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