mirror of
https://github.com/torvalds/linux.git
synced 2025-11-08 04:30:00 +02:00
The DVB binding schema at the DVB core assumes that the frontend is a
separate driver. Faling to do that causes OOPS when the module is
removed, as it tries to do a symbol_put_addr on an internal symbol,
causing craches like:
WARNING: CPU: 1 PID: 28102 at kernel/module.c:1108 module_put+0x57/0x70
Modules linked in: dvb_usb_gp8psk(-) dvb_usb dvb_core nvidia_drm(PO) nvidia_modeset(PO) snd_hda_codec_hdmi snd_hda_intel snd_hda_codec snd_hwdep snd_hda_core snd_pcm snd_timer snd soundcore nvidia(PO) [last unloaded: rc_core]
CPU: 1 PID: 28102 Comm: rmmod Tainted: P WC O 4.8.4-build.1 #1
Hardware name: MSI MS-7309/MS-7309, BIOS V1.12 02/23/2009
Call Trace:
dump_stack+0x44/0x64
__warn+0xfa/0x120
module_put+0x57/0x70
module_put+0x57/0x70
warn_slowpath_null+0x23/0x30
module_put+0x57/0x70
gp8psk_fe_set_frontend+0x460/0x460 [dvb_usb_gp8psk]
symbol_put_addr+0x27/0x50
dvb_usb_adapter_frontend_exit+0x3a/0x70 [dvb_usb]
From Derek's tests:
"Attach bug is fixed, tuning works, module unloads without
crashing. Everything seems ok!"
Reported-by: Derek <user.vdr@gmail.com>
Tested-by: Derek <user.vdr@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
37 lines
1.2 KiB
C
37 lines
1.2 KiB
C
/* DVB USB compliant Linux driver for the
|
|
* - GENPIX 8pks/qpsk/DCII USB2.0 DVB-S module
|
|
*
|
|
* Copyright (C) 2006 Alan Nisota (alannisota@gmail.com)
|
|
* Copyright (C) 2006,2007 Alan Nisota (alannisota@gmail.com)
|
|
*
|
|
* Thanks to GENPIX for the sample code used to implement this module.
|
|
*
|
|
* This module is based off the vp7045 and vp702x modules
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify it
|
|
* under the terms of the GNU General Public License as published by the Free
|
|
* Software Foundation, version 2.
|
|
*
|
|
* see Documentation/dvb/README.dvb-usb for more information
|
|
*/
|
|
#ifndef _DVB_USB_GP8PSK_H_
|
|
#define _DVB_USB_GP8PSK_H_
|
|
|
|
#define DVB_USB_LOG_PREFIX "gp8psk"
|
|
#include "dvb-usb.h"
|
|
|
|
extern int dvb_usb_gp8psk_debug;
|
|
#define deb_info(args...) dprintk(dvb_usb_gp8psk_debug,0x01,args)
|
|
#define deb_xfer(args...) dprintk(dvb_usb_gp8psk_debug,0x02,args)
|
|
#define deb_rc(args...) dprintk(dvb_usb_gp8psk_debug,0x04,args)
|
|
|
|
#define GET_USB_SPEED 0x07
|
|
|
|
#define RESET_FX2 0x13
|
|
|
|
#define FW_VERSION_READ 0x0B
|
|
#define VENDOR_STRING_READ 0x0C
|
|
#define PRODUCT_STRING_READ 0x0D
|
|
#define FW_BCD_VERSION_READ 0x14
|
|
|
|
#endif
|