• Srinivas Kandagatla's avatar
    usb: phy: msm: fix error handling in probe. · a38a08df
    Srinivas Kandagatla authored
    This driver registers for extcon events as part of its probe, but
    never unregisters them in case of error in the probe path.
    
    There were multiple issues noticed due to this missing error handling.
    One of them is random crashes if the regulators are not ready yet by the
    time probe is invoked.
    
    Ivan's previous attempt [1] to fix this issue, did not really address
    all the failure cases like regualtor/get_irq failures.
    
    [1] https://lkml.org/lkml/2015/9/7/62
    
    Without this patch the kernel would carsh with log:
    ...
    Unable to handle kernel paging request at virtual address 17d78410
    pgd = ffffffc001a5c000
    [17d78410] *pgd=00000000b6806003, *pud=00000000b6806003, *pmd=0000000000000000
    Internal error: Oops: 96000005 [#1] PREEMPT SMP
    Modules linked in:
    CPU: 0 PID: 6 Comm: kworker/u8:0 Not tainted 4.4.0+ #48
    Hardware name: Qualcomm Technologies, Inc. APQ 8016 SBC (DT)
    Workqueue: deferwq deferred_probe_work_func
    task: ffffffc03686e900 ti: ffffffc0368b0000 task.ti: ffffffc0368b0000
    PC is at raw_notifier_chain_register+0x1c/0x44
    LR is at extcon_register_notifier+0x88/0xc8
    pc : [<ffffffc0000da43c>] lr : [<ffffffc000606298>] pstate: 80000085
    sp : ffffffc0368b3a70
    x29: ffffffc0368b3a70 x28: ffffffc03680c310
    x27: ffffffc035518000 x26: ffffffc035518000
    x25: ffffffc03bfa20e0 x24: ffffffc035580a18
    x23: 0000000000000000 x22: ffffffc035518458
    x21: ffffffc0355e9a60 x20: ffffffc035518000
    x19: 0000000000000000 x18: 0000000000000028
    x17: 0000000000000003 x16: ffffffc0018153c8
    x15: 0000000000000001 x14: ffffffc03686f0f8
    x13: ffffffc03686f0f8 x12: 0000000000000003
    x11: 0000000000000001 x10: 0000000000000001
    x9 : ffffffc03686f0f8 x8 : 0000e3872014c1a1
    x7 : 0000000000000028 x6 : 0000000000000000
    x5 : 0000000000000001 x4 : 0000000000000000
    x3 : 00000000354fb170 x2 : 0000000017d78400
    x1 : ffffffc0355e9a60 x0 : ffffffc0354fb268
    
    Fixes: 	591fc116 ("usb: phy: msm: Use extcon framework for VBUS and ID detection")
    CC: Stable <stable@vger.kernel.org>
    Signed-off-by: default avatarSrinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Signed-off-by: default avatarFelipe Balbi <balbi@kernel.org>
    a38a08df
phy-msm-usb.c 48.4 KB