Hiï James This patch fix bug reported by Chuck. And this new version incorporate comments from Hannes. Please consider to include it into mainline. Jack. From: Jack Wang <jack_wang@xxxxxxxxx> Date: Wed, 15 Sep 2010 16:43:03 +0800 Subject: [PATCH] fix bug for vacant phy Signed-off-by: Jack Wang <jack_wang@xxxxxxxxx> Signed-off-by: Lindar Liu <lindar_liu@xxxxxxxxx> Tested-by: Chuck Tuffli <Chuck_Tuffli@xxxxxxxxxxxxxx> --- sas_expander.c | 9 ++++++--- 1 files changed, 6 insertions(+), 3 deletions(-) diff --git a/sas_expander.c b/sas_expander.c index d1d86a6..f282234 100644 --- a/sas_expander.c +++ b/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, -- 1.7.2.3.msysgit.0
Attachment:
0001-fix-bug-for-vacant-phy.patch
Description: Binary data