[SCSI] libsas: fix bug for vacant phy
authorJack Wang <jack_wang@usish.com>
Wed, 6 Oct 2010 08:05:35 +0000 (16:05 +0800)
committerJames Bottomley <James.Bottomley@suse.de>
Mon, 11 Oct 2010 22:40:00 +0000 (17:40 -0500)
This patch fix bug reported by Chuck. And this new version incorporate comments
from Hannes. Please consider to include it into mainline.

Signed-off-by: Jack Wang <jack_wang@usish.com>
Signed-off-by: Lindar Liu <lindar_liu@usish.com>
Tested-by: Chuck Tuffli <Chuck_Tuffli@pmc-sierra.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
drivers/scsi/libsas/sas_expander.c

index 61d81f858a5aef14b0e5a9ef8eb59ac27106fd7b..505ffe3582931f84d5061a11a9e3398e0c06eb13 100644 (file)
@@ -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,
This page took 0.02584 seconds and 5 git commands to generate.