From f798c0d162ddd7d732d42159ff14f5dffcd26537 Mon Sep 17 00:00:00 2001 From: Jack Wang Date: Wed, 6 Oct 2010 16:05:35 +0800 Subject: [PATCH] --- yaml --- r: 213383 b: refs/heads/master c: 2bc72c91ea7e104b0e40151543d135b933a12e93 h: refs/heads/master i: 213381: 39bbcfbd44808e0bc81f0a92dad86553582b5132 213379: b8fa345eca901db22a81e7e8d91ae599b21af1ef 213375: 47289bfefaf1265eb5b1b1e707a9d0dd70ebd650 v: v3 --- [refs] | 2 +- trunk/drivers/scsi/libsas/sas_expander.c | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index bdf5f5816af0..c6f30b88a79c 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 526f7c7950bbf1271e59177d70d74438c2ef96de +refs/heads/master: 2bc72c91ea7e104b0e40151543d135b933a12e93 diff --git a/trunk/drivers/scsi/libsas/sas_expander.c b/trunk/drivers/scsi/libsas/sas_expander.c index 61d81f858a5a..505ffe358293 100644 --- a/trunk/drivers/scsi/libsas/sas_expander.c +++ b/trunk/drivers/scsi/libsas/sas_expander.c @@ -175,10 +175,10 @@ static void sas_set_ex_phy(struct domain_device *dev, int phy_id, switch (resp->result) { case SMP_RESP_PHY_VACANT: phy->phy_state = PHY_VACANT; - return; + break; default: phy->phy_state = PHY_NOT_PRESENT; - return; + break; case SMP_RESP_FUNC_ACC: phy->phy_state = PHY_EMPTY; /* do not know yet */ break; @@ -209,7 +209,10 @@ static void sas_set_ex_phy(struct domain_device *dev, int phy_id, phy->phy->negotiated_linkrate = phy->linkrate; if (!rediscover) - sas_phy_add(phy->phy); + if (sas_phy_add(phy->phy)) { + sas_phy_free(phy->phy); + return; + } SAS_DPRINTK("ex %016llx phy%02d:%c attached: %016llx\n", SAS_ADDR(dev->sas_addr), phy->phy_id,