lkml.org 
[lkml]   [2020]   [Jun]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.19 045/131] usb: host: xhci-mtk: avoid runtime suspend when removing hcd
    Date
    From: Macpaul Lin <macpaul.lin@mediatek.com>

    commit a24d5072e87457a14023ee1dd3fc8b1e76f899ef upstream.

    When runtime suspend was enabled, runtime suspend might happen
    when xhci is removing hcd. This might cause kernel panic when hcd
    has been freed but runtime pm suspend related handle need to
    reference it.

    Signed-off-by: Macpaul Lin <macpaul.lin@mediatek.com>
    Reviewed-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Link: https://lore.kernel.org/r/20200624135949.22611-4-mathias.nyman@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    drivers/usb/host/xhci-mtk.c | 5 +++--
    1 file changed, 3 insertions(+), 2 deletions(-)

    diff --git a/drivers/usb/host/xhci-mtk.c b/drivers/usb/host/xhci-mtk.c
    index 60987c787e44f..2c3b31109e168 100644
    --- a/drivers/usb/host/xhci-mtk.c
    +++ b/drivers/usb/host/xhci-mtk.c
    @@ -592,6 +592,9 @@ static int xhci_mtk_remove(struct platform_device *dev)
    struct xhci_hcd *xhci = hcd_to_xhci(hcd);
    struct usb_hcd *shared_hcd = xhci->shared_hcd;

    + pm_runtime_put_noidle(&dev->dev);
    + pm_runtime_disable(&dev->dev);
    +
    usb_remove_hcd(shared_hcd);
    xhci->shared_hcd = NULL;
    device_init_wakeup(&dev->dev, false);
    @@ -602,8 +605,6 @@ static int xhci_mtk_remove(struct platform_device *dev)
    xhci_mtk_sch_exit(mtk);
    xhci_mtk_clks_disable(mtk);
    xhci_mtk_ldos_disable(mtk);
    - pm_runtime_put_sync(&dev->dev);
    - pm_runtime_disable(&dev->dev);

    return 0;
    }
    --
    2.25.1
    \
     
     \ /
      Last update: 2020-06-29 22:08    [W:3.044 / U:0.148 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site