| From 8532b5b51a4678830633cf3fabc2ce78f4c5caff Mon Sep 17 00:00:00 2001 |
| From: Zhengjun Xing <zhengjun.xing@linux.intel.com> |
| Date: Mon, 12 Feb 2018 14:24:51 +0200 |
| Subject: [PATCH 0537/1795] xhci: fix xhci debugfs errors in xhci_stop |
| |
| In function xhci_stop, xhci_debugfs_exit called before xhci_mem_cleanup. |
| xhci_debugfs_exit removed the xhci debugfs root nodes, xhci_mem_cleanup |
| called function xhci_free_virt_devices_depth_first which in turn called |
| function xhci_debugfs_remove_slot. |
| Function xhci_debugfs_remove_slot removed the nodes for devices, the nodes |
| folders are sub folder of xhci debugfs. |
| |
| It is unreasonable to remove xhci debugfs root folder before |
| xhci debugfs sub folder. Function xhci_mem_cleanup should be called |
| before function xhci_debugfs_exit. |
| |
| Fixes: 02b6fdc2a153 ("usb: xhci: Add debugfs interface for xHCI driver") |
| Cc: <stable@vger.kernel.org> # v4.15 |
| Signed-off-by: Zhengjun Xing <zhengjun.xing@linux.intel.com> |
| Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| (cherry picked from commit 11cd764dc9a030991880ad4d51db93918afa5822) |
| Signed-off-by: Simon Horman <horms+renesas@verge.net.au> |
| Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> |
| --- |
| drivers/usb/host/xhci.c | 3 +-- |
| 1 file changed, 1 insertion(+), 2 deletions(-) |
| |
| diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c |
| index 72ab7148c99b..b365d37aacbf 100644 |
| --- a/drivers/usb/host/xhci.c |
| +++ b/drivers/usb/host/xhci.c |
| @@ -646,8 +646,6 @@ static void xhci_stop(struct usb_hcd *hcd) |
| return; |
| } |
| |
| - xhci_debugfs_exit(xhci); |
| - |
| xhci_dbc_exit(xhci); |
| |
| spin_lock_irq(&xhci->lock); |
| @@ -680,6 +678,7 @@ static void xhci_stop(struct usb_hcd *hcd) |
| |
| xhci_dbg_trace(xhci, trace_xhci_dbg_init, "cleaning up memory"); |
| xhci_mem_cleanup(xhci); |
| + xhci_debugfs_exit(xhci); |
| xhci_dbg_trace(xhci, trace_xhci_dbg_init, |
| "xhci_stop completed - status = %x", |
| readl(&xhci->op_regs->status)); |
| -- |
| 2.19.0 |
| |