From: Dan Williams <dan.j.williams@intel.com>
Date: Wed, 21 Dec 2011 23:19:56 +0000 (-0800)
Subject: [SCSI] libsas: check for 'gone' expanders in smp_execute_task()
X-Git-Tag: firefly_0821_release~3680^2~3167^2~107
X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=3a9c5560f677690f65038f399f4f598c79b83186;p=firefly-linux-kernel-4.4.55.git

[SCSI] libsas: check for 'gone' expanders in smp_execute_task()

No sense in issuing or retrying commands to an expander that has been
removed.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
---

diff --git a/drivers/scsi/libsas/sas_expander.c b/drivers/scsi/libsas/sas_expander.c
index 7701ab588404..6fb1f3afd1e0 100644
--- a/drivers/scsi/libsas/sas_expander.c
+++ b/drivers/scsi/libsas/sas_expander.c
@@ -74,6 +74,11 @@ static int smp_execute_task(struct domain_device *dev, void *req, int req_size,
 
 	mutex_lock(&dev->ex_dev.cmd_mutex);
 	for (retry = 0; retry < 3; retry++) {
+		if (test_bit(SAS_DEV_GONE, &dev->state)) {
+			res = -ECOMM;
+			break;
+		}
+
 		task = sas_alloc_task(GFP_KERNEL);
 		if (!task) {
 			res = -ENOMEM;