Commit 11cd764d authored by Zhengjun Xing's avatar Zhengjun Xing Committed by Greg Kroah-Hartman

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: 02b6fdc2 ("usb: xhci: Add debugfs interface for xHCI driver")
Cc: <stable@vger.kernel.org> # v4.15
Signed-off-by: default avatarZhengjun Xing <zhengjun.xing@linux.intel.com>
Signed-off-by: default avatarMathias Nyman <mathias.nyman@linux.intel.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 8c5a93eb
...@@ -646,8 +646,6 @@ static void xhci_stop(struct usb_hcd *hcd) ...@@ -646,8 +646,6 @@ static void xhci_stop(struct usb_hcd *hcd)
return; return;
} }
xhci_debugfs_exit(xhci);
xhci_dbc_exit(xhci); xhci_dbc_exit(xhci);
spin_lock_irq(&xhci->lock); spin_lock_irq(&xhci->lock);
...@@ -680,6 +678,7 @@ static void xhci_stop(struct usb_hcd *hcd) ...@@ -680,6 +678,7 @@ static void xhci_stop(struct usb_hcd *hcd)
xhci_dbg_trace(xhci, trace_xhci_dbg_init, "cleaning up memory"); xhci_dbg_trace(xhci, trace_xhci_dbg_init, "cleaning up memory");
xhci_mem_cleanup(xhci); xhci_mem_cleanup(xhci);
xhci_debugfs_exit(xhci);
xhci_dbg_trace(xhci, trace_xhci_dbg_init, xhci_dbg_trace(xhci, trace_xhci_dbg_init,
"xhci_stop completed - status = %x", "xhci_stop completed - status = %x",
readl(&xhci->op_regs->status)); readl(&xhci->op_regs->status));
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment