xhci-mem: init list heads at the beginning of init
authorSergio Aguirre <sergio.a.aguirre.rodriguez@intel.com>
Thu, 4 Apr 2013 17:32:13 +0000 (10:32 -0700)
committerBen Hutchings <ben@decadent.org.uk>
Wed, 19 Jun 2013 01:16:48 +0000 (02:16 +0100)
commita1580a95fd066e3cbe9057ad2b87bfd5ace521bf
tree94da54e95d1da4ecf227d2589230f3d70b31d107
parentb698c01da50a55f495687146d4e72bc0d5746c04
xhci-mem: init list heads at the beginning of init

commit 331de00a64e5027365145bdf51da27b9ce15dfd5 upstream.

It is possible that we fail on xhci_mem_init, just before doing
the INIT_LIST_HEAD, and calling xhci_mem_cleanup.

Problem is that, the list_for_each_entry_safe macro, assumes
list heads are initialized (not NULL), and dereferences their 'next'
pointer, causing a kernel panic if this is not yet initialized.

Let's protect from that by moving inits to the beginning.

This patch should be backported to kernels as old as 3.2, that
contain the commit 9574323c39d1f8359a04843075d89c9f32d8b7e6 "xHCI: test
USB2 software LPM".

Signed-off-by: Sergio Aguirre <sergio.a.aguirre.rodriguez@intel.com>
Acked-by: David Cohen <david.a.cohen@intel.com>
Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
[bwh: Backported to 3.2: adjust context]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
drivers/usb/host/xhci-mem.c