Skip to content

Instantly share code, notes, and snippets.

@Uplink03
Last active August 12, 2021 22:00
Show Gist options
  • Save Uplink03/e97343ab9e5e5143b2d5cac74a3f614d to your computer and use it in GitHub Desktop.
Save Uplink03/e97343ab9e5e5143b2d5cac74a3f614d to your computer and use it in GitHub Desktop.
Kernel Oops dw2102
diff --git a/drivers/media/usb/dvb-usb/dw2102.c b/drivers/media/usb/dvb-usb/dw2102.c
index 346946f..0aa19cd 100644
--- a/drivers/media/usb/dvb-usb/dw2102.c
+++ b/drivers/media/usb/dvb-usb/dw2102.c
@@ -2425,18 +2425,20 @@ static void dw2102_disconnect(struct usb_interface *intf)
struct dw2102_state *st = (struct dw2102_state *)d->priv;
struct i2c_client *client;
- /* remove I2C client for tuner */
- client = st->i2c_client_tuner;
- if (client) {
- module_put(client->dev.driver->owner);
- i2c_unregister_device(client);
- }
+ if (st) {
+ /* remove I2C client for tuner */
+ client = st->i2c_client_tuner;
+ if (client) {
+ module_put(client->dev.driver->owner);
+ i2c_unregister_device(client);
+ }
- /* remove I2C client for demodulator */
- client = st->i2c_client_demod;
- if (client) {
- module_put(client->dev.driver->owner);
- i2c_unregister_device(client);
+ /* remove I2C client for demodulator */
+ client = st->i2c_client_demod;
+ if (client) {
+ module_put(client->dev.driver->owner);
+ i2c_unregister_device(client);
+ }
}
dvb_usb_device_exit(intf);
@Uplink03
Copy link
Author

Uplink03 commented Aug 12, 2021

Patch source: https://bugzilla.kernel.org/show_bug.cgi?id=197731

As root:

apt install flex bison libelf-dev

KSRCVER=$(uname -r | sed 's/-.*$//')
apt install linux-source-$KSRCVER
cd /usr/src/linux-source-$KSRCVER
tar -xf linux-source-$KSRCVER.tar.bz2
cd linux-source-$KSRCVER

make oldconfig
make prepare
make scripts

cp -v /usr/src/linux-headers-$(uname -r)/Module.symvers .

patch -p1 <path/to/dw2102.patch

make M=drivers/media/usb/dvb-usb modules

/usr/src/linux-headers-$(uname -r)/scripts/sign-file sha512 /var/lib/shim-signed/mok/MOK.{priv,der} drivers/media/usb/dvb-usb/dvb-usb-dw2102.ko

cp drivers/media/usb/dvb-usb/dvb-usb-dw2102.ko /lib/modules/$(uname -r)/updates/
depmod

Get firmware from https://github.com/OpenELEC/dvb-firmware

Scan with w_scan. E.g. w_scan -f s -s S28E2 for UK Freesat

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment