• Russell King's avatar
    [media] em28xx: fix em28xx-input removal · 9b196ac1
    Russell King authored
    commit bbfebeea upstream.
    
    Removing the em28xx-rc module results in the following lockdep splat,
    which is caused by trying to call cancel_delayed_work_sync() on an
    uninitialised delayed work.  Fix this by ensuring we always initialise
    the work.
    
    INFO: trying to register non-static key.
    the code is fine but needs lockdep annotation.
    turning off the locking correctness validator.
    CPU: 0 PID: 2183 Comm: rmmod Not tainted 3.18.0+ #1464
    Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree)
    Backtrace:
    [<c0012228>] (dump_backtrace) from [<c00123c0>] (show_stack+0x18/0x1c)
     r6:c1419d2c r5:00000000 r4:00000000 r3:00000000
    [<c00123a8>] (show_stack) from [<c06e2550>] (dump_stack+0x7c/0x98)
    [<c06e24d4>] (dump_stack) from [<c0061c94>] (__lock_acquire+0x16d4/0x1bb0)
     r4:edf19f74 r3:df049380
    [<c00605c0>] (__lock_acquire) from [<c00626d4>] (lock_acquire+0xb0/0x124)
     r10:00000000 r9:c003ba90 r8:00000000 r7:00000000 r6:00000000 r5:edf19f74
     r4:00000000
    [<c0062624>] (lock_acquire) from [<c003bad4>] (flush_work+0x44/0x264)
     r10:00000000 r9:eaa86000 r8:edf190b0 r7:edf19f74 r6:00000001 r5:edf19f64
     r4:00000000
    [<c003ba90>] (flush_work) from [<c003d8f0>] (__cancel_work_timer+0x8c/0x124)
     r7:00000000 r6:00000001 r5:00000000 r4:edf19f64
    [<c003d864>] (__cancel_work_timer) from [<c003d99c>] (cancel_delayed_work_sync+0x14/0x18)
     r7:00000000 r6:eccc3600 r5:00000000 r4:edf19000
    [<c003d988>] (cancel_delayed_work_sync) from [<bf0b5c10>] (em28xx_ir_fini+0x48/0xd8 [em28xx_rc])
    [<bf0b5bc8>] (em28xx_ir_fini [em28xx_rc]) from [<bf08a0a8>] (em28xx_unregister_extension+0x40/0x94 [em28xx])
     r8:c000edc4 r7:00000081 r6:bf092bf4 r5:bf0b6a2c r4:edf19000 r3:bf0b5bc8
    [<bf08a068>] (em28xx_unregister_extension [em28xx]) from [<bf0b64dc>] (em28xx_rc_unregister+0x14/0x1c [em28xx_rc])
     r6:00000800 r5:00000000 r4:bf0b6a50 r3:bf0b64c8
    [<bf0b64c8>] (em28xx_rc_unregister [em28xx_rc]) from [<c0096710>] (SyS_delete_module+0x11c/0x180)
    [<c00965f4>] (SyS_delete_module) from [<c000ec00>] (ret_fast_syscall+0x0/0x48)
     r6:00000001 r5:beb0f813 r4:b8b17d00
    
    Fixes: f5222609 ("[media] em28xx: extend the support for device buttons")
    Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
    Reviewed-by: default avatarFrank Schäfer <fschaefer.oss@googlemail.com>
    Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@osg.samsung.com>
    [ luis: backported to 3.16: adjusted context ]
    Signed-off-by: default avatarLuis Henriques <luis.henriques@canonical.com>
    9b196ac1
em28xx-input.c 23.4 KB