• Jiri Slaby's avatar
    V4L/DVB: DVB: fix dvr node refcounting · 1c488ea9
    Jiri Slaby authored
    In dvb_dvr_release, there is a test dvbdev->users==-1, but users are
    never negative. This error results in hung tasks:
      task                        PC stack   pid father
    bash          D ffffffffa000c948     0  3264   3170 0x00000000
     ffff88003aec5ce8 0000000000000086 0000000000011f80 0000000000011f80
     ffff88003aec5fd8 ffff88003aec5fd8 ffff88003b848670 0000000000011f80
     ffff88003aec5fd8 0000000000011f80 ffff88003e02a030 ffff88003b848670
    Call Trace:
     [<ffffffff813dd4a5>] dvb_dmxdev_release+0xc5/0x130
     [<ffffffff8107b750>] ? autoremove_wake_function+0x0/0x40
     [<ffffffffa00013a2>] dvb_usb_adapter_dvb_exit+0x42/0x70 [dvb_usb]
     [<ffffffffa0000525>] dvb_usb_exit+0x55/0xd0 [dvb_usb]
     [<ffffffffa00005ee>] dvb_usb_device_exit+0x4e/0x70 [dvb_usb]
     [<ffffffffa000a065>] af9015_usb_device_exit+0x55/0x60 [dvb_usb_af9015]
     [<ffffffff813a3f05>] usb_unbind_interface+0x55/0x1a0
     [<ffffffff81316000>] __device_release_driver+0x70/0xe0
    ...
    
    So check against 1 there instead.
    
    BTW why's the TODO there? Adding TODOs to the code without
    descriptions is like adding nothing.
    Signed-off-by: default avatarJiri Slaby <jslaby@suse.cz>
    Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
    1c488ea9
dmxdev.c 30.5 KB