diff options
Diffstat (limited to 'drivers/usb/host/xhci-mem.c')
| -rw-r--r-- | drivers/usb/host/xhci-mem.c | 10 | 
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c index 1db4fea8c17..b8fd270a8b0 100644 --- a/drivers/usb/host/xhci-mem.c +++ b/drivers/usb/host/xhci-mem.c @@ -802,9 +802,11 @@ void xhci_mem_cleanup(struct xhci_hcd *xhci)  	int i;  	/* Free the Event Ring Segment Table and the actual Event Ring */ -	xhci_writel(xhci, 0, &xhci->ir_set->erst_size); -	xhci_write_64(xhci, 0, &xhci->ir_set->erst_base); -	xhci_write_64(xhci, 0, &xhci->ir_set->erst_dequeue); +	if (xhci->ir_set) { +		xhci_writel(xhci, 0, &xhci->ir_set->erst_size); +		xhci_write_64(xhci, 0, &xhci->ir_set->erst_base); +		xhci_write_64(xhci, 0, &xhci->ir_set->erst_dequeue); +	}  	size = sizeof(struct xhci_erst_entry)*(xhci->erst.num_entries);  	if (xhci->erst.entries)  		pci_free_consistent(pdev, size, @@ -841,9 +843,9 @@ void xhci_mem_cleanup(struct xhci_hcd *xhci)  				xhci->dcbaa, xhci->dcbaa->dma);  	xhci->dcbaa = NULL; +	scratchpad_free(xhci);  	xhci->page_size = 0;  	xhci->page_shift = 0; -	scratchpad_free(xhci);  }  int xhci_mem_init(struct xhci_hcd *xhci, gfp_t flags)  |