libsas: fix false positive 'device attached' conditions
authorDan Williams <dan.j.williams@intel.com>
Tue, 20 Mar 2012 17:50:27 +0000 (10:50 -0700)
committerBen Hutchings <ben@decadent.org.uk>
Fri, 11 May 2012 12:14:47 +0000 (13:14 +0100)
commit6c25e70f9026d5aa39fb2cb18f66454fd077d1b2
treef3a6e4cc66c94ee1a3fe5bd80243a56c8275a46f
parentaa60a4b796e450c561fb070cbd23c4650896cb67
libsas: fix false positive 'device attached' conditions

commit 7d1d865181185bdf1316d236b1b4bd02c9020729 upstream.

Normalize phy->attached_sas_addr to return a zero-address in the case
when device-type == NO_DEVICE or the linkrate is invalid to handle
expanders that put non-zero sas addresses in the discovery response:

 sas: ex 5001b4da000f903f phy02:U:0 attached: 0100000000000000 (no device)
 sas: ex 5001b4da000f903f phy01:U:0 attached: 0100000000000000 (no device)
 sas: ex 5001b4da000f903f phy03:U:0 attached: 0100000000000000 (no device)
 sas: ex 5001b4da000f903f phy00:U:0 attached: 0100000000000000 (no device)

Reported-by: Andrzej Jakowski <andrzej.jakowski@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
drivers/scsi/libsas/sas_expander.c