summaryrefslogtreecommitdiffstats
path: root/drivers/scsi/libsas
diff options
context:
space:
mode:
authorDarrick J. Wong <djwong@us.ibm.com>2007-01-26 14:08:41 -0800
committerJames Bottomley <jejb@mulgrave.il.steeleye.com>2007-01-27 10:04:58 -0600
commit3b6e9fafc40e36f50f0bd0f1ee758eecd79f1098 (patch)
tree7e535b1ba59f883e03c1c468cb56a14aaf06bd44 /drivers/scsi/libsas
parenta5364c5a311f73eade88f37bf5b614797ce30ec9 (diff)
downloadlinux-3b6e9fafc40e36f50f0bd0f1ee758eecd79f1098.tar.bz2
[SCSI] libsas: Fix incorrect sas_port deformation in sas_form_port
Currently, sas_form_port checks the given asd_sas_phy's sas_phy to see if there's already a port attached. If so, the SAS addresses of the port and the phy are compared to determine if we need to detach from the port because the addresses don't match or if we can stop; the SAS address stored in the sas_port reflects whatever device _was_ attached to the port/phy, and the SAS address stored in the sas_port reflects whatever device we just discovered. As written, the code detaches from the port if the addresses _do_ match, and prints an error if they do _not_ match. I believe this to be incorrect, as it seems more logical to keep the port if the addresses match (i.e. the phy was reset but the device didn't change), and detach it they do not (i.e. the device changed). Signed-off-by: Darrick J. Wong <djwong@us.ibm.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'drivers/scsi/libsas')
-rw-r--r--drivers/scsi/libsas/sas_port.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/scsi/libsas/sas_port.c b/drivers/scsi/libsas/sas_port.c
index a796ae31430e..e1e2d085c920 100644
--- a/drivers/scsi/libsas/sas_port.c
+++ b/drivers/scsi/libsas/sas_port.c
@@ -46,7 +46,7 @@ static void sas_form_port(struct asd_sas_phy *phy)
if (port) {
if (memcmp(port->attached_sas_addr, phy->attached_sas_addr,
- SAS_ADDR_SIZE) == 0)
+ SAS_ADDR_SIZE) != 0)
sas_deform_port(phy);
else {
SAS_DPRINTK("%s: phy%d belongs to port%d already(%d)!\n",