xhci: Don't free endpoints in xhci_mem_cleanup()
authorTakashi Iwai <tiwai@suse.de>
Fri, 1 Jun 2012 08:06:24 +0000 (10:06 +0200)
committerSarah Sharp <sarah.a.sharp@linux.intel.com>
Wed, 13 Jun 2012 23:37:30 +0000 (16:37 -0700)
commit32f1d2c536d0c26c5814cb0e6a0606c42d02fac1
tree76f9d51f81cf29d07a988b0283e2ea4d874a0971
parent46ed8f00d8982e49f8fe2c1a9cea192f640cb3ba
xhci: Don't free endpoints in xhci_mem_cleanup()

This patch fixes a few issues introduced in the recent fix
[f8a9e72d: USB: fix resource leak in xhci power loss path]

- The endpoints listed in bw table are just links and each entry is an
 array member of dev->eps[].  But the commit above adds a kfree() call
 to these instances, and thus it results in memory corruption.

- It clears only the first entry of rh_bw[], but there can be multiple
  ports.

- It'd be safer to clear the list_head of ep as well, not only
  removing from the list, as it's checked in
  xhci_discover_or_reset_device().

This patch should be backported to kernels as old as 3.2, that contain
the commit 839c817ce67178ca3c7c7ad534c571bba1e69ebe "xhci: Store
information about roothubs and TTs."

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Reviewed-by: Oliver Neukum <oneukum@suse.de>
Cc: <stable@vger.kernel.org>
drivers/usb/host/xhci-mem.c