You need to sign in or sign up before continuing.
  • Sebastian Andrzej Siewior's avatar
    usb: musb: only cancel work if it is initialized · 0393ff75
    Sebastian Andrzej Siewior authored
    commit 66fadea5 upstream.
    
    Since commit c5340bd1
    
     ("usb: musb: cancel work on removal") the workqueue
    is cancelled but then if we bail out before the workqueue is setup we
    get this:
    
    |INFO: trying to register non-static key.
    |the code is fine but needs lockdep annotation.
    |turning off the locking correctness validator.
    |CPU: 0 PID: 708 Comm: modprobe Not tainted 3.12.0+ #435
    |[<c00867bc>] (lock_acquire+0xf0/0x108) from [<c00529d0>] (flush_work+0x38/0x2ec)
    |[<c00529d0>] (flush_work+0x38/0x2ec) from [<c0052d24>] (__cancel_work_timer+0xa0/0x134)
    |[<c0052d24>] (__cancel_work_timer+0xa0/0x134) from [<bf0e4ae4>] (musb_free+0x40/0x60 [musb_hdrc])
    |[<bf0e4ae4>] (musb_free+0x40/0x60 [musb_hdrc]) from [<bf0e5364>] (musb_probe+0x678/0xb78 [musb_hdrc])
    |[<bf0e5364>] (musb_probe+0x678/0xb78 [musb_hdrc]) from [<c0294bf0>] (platform_drv_probe+0x1c/0x24)
    |[<c0294bf0>] (platform_drv_probe+0x1c/0x24) from [<c0293970>] (driver_probe_device+0x90/0x224)
    |[<c0293970>] (driver_probe_device+0x90/0x224) from [<c0291ef0>] (bus_for_each_drv+0x60/0x8c)
    |[<c0291ef0>] (bus_for_each_drv+0x60/0x8c) from [<c02938bc>] (device_attach+0x80/0xa4)
    |[<c02938bc>] (device_attach+0x80/0xa4) from [<c0292b24>] (bus_probe_device+0x88/0xac)
    |[<c0292b24>] (bus_probe_device+0x88/0xac) from [<c0291490>] (device_add+0x388/0x6c8)
    |[<c0291490>] (device_add+0x388/0x6c8) from [<c02952a0>] (platform_device_add+0x188/0x22c)
    |[<c02952a0>] (platform_device_add+0x188/0x22c) from [<bf11ea30>] (dsps_probe+0x294/0x394 [musb_dsps])
    |[<bf11ea30>] (dsps_probe+0x294/0x394 [musb_dsps]) from [<c0294bf0>] (platform_drv_probe+0x1c/0x24)
    |platform musb-hdrc.1.auto: Driver musb-hdrc requests probe deferral
    |musb-hdrc musb-hdrc.1.auto: musb_init_controller failed with status -517
    
    This patch moves the init part to earlier part so it can be cleaned as
    part of the fail3 label because now it is surrounded by the fail4 label.
    Step two is to remove it from musb_free() and add it to the two cleanup
    paths (error path and device removal) separately.
    Signed-off-by: default avatarSebastian Andrzej Siewior <bigeasy@linutronix.de>
    Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    0393ff75
musb_core.c 63.1 KB