• Mauro Carvalho Chehab's avatar
    gp8psk: Fix DVB frontend attach · 7a0786c1
    Mauro Carvalho Chehab authored
    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: default avatarDerek <user.vdr@gmail.com>
    Tested-by: default avatarDerek <user.vdr@gmail.com>
    Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    7a0786c1
gp8psk.c 9.91 KB