[SCSI] libsas: fix sas_get_port_device regression
authorDan Williams <dan.j.williams@intel.com>
Mon, 12 Mar 2012 18:38:26 +0000 (11:38 -0700)
committerJames Bottomley <JBottomley@Parallels.com>
Mon, 23 Apr 2012 11:07:25 +0000 (12:07 +0100)
commitec236e526777ea8825e6e0c3673a40389692eabf
treef066f500296e65563ad70e0913273aa9db8b4705
parent1699490db339e2c6b3037ea8e7dcd6b2755b688e
[SCSI] libsas: fix sas_get_port_device regression

Commit 899fcf4 "[SCSI] libsas: set attached device type and target
protocols for local phys" setup 'phy' to be dereferenced after
list_for_each_entry(phy, &port->phy_list, port_phy_el) (i.e. phy ==
&port->phy_list) resulting in reports like:

  BUG: unable to handle kernel NULL pointer dereference at 00000000000002b0
  IP: [<ffffffffa00ce948>] sas_discover_domain+0x29e/0x4fb [libsas]

...fix by deferring sas_phy_set_target() to the end of
sas_get_port_device().

Reported-by: Tom Jackson <thomas.p.jackson@intel.com>
Tested-by: Tom Jackson <thomas.p.jackson@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
drivers/scsi/libsas/sas_discover.c