summaryrefslogtreecommitdiff
path: root/drivers/scsi/pm8001
diff options
context:
space:
mode:
authorXinHong Zhu <zxh3737@163.com>2014-02-14 08:01:28 (GMT)
committerJames Bottomley <JBottomley@Parallels.com>2014-03-15 17:19:22 (GMT)
commitaed97b8b8194e818a94cc5ce5662f19b8bdd8adc (patch)
tree12ca26a5fd150fadbf261ccf77b417832eae6882 /drivers/scsi/pm8001
parent09f942bd83610f60f3b00b8f942a79f402307fe6 (diff)
downloadlinux-aed97b8b8194e818a94cc5ce5662f19b8bdd8adc.tar.xz
[SCSI] pm80xx: fix problem of pm8001_work_fn reseting incorrect phy device
If a phy device is removed, the device can get error of I/O and HBA maybe receieve IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS of event which causes pm8001_work_fn to reset the phy device but in pm8001_task_exec we don't assign a value for the device field of the ccb and in other case a ccb used have device field set, when ccb is freed the field device of the ccb don't be set NULL.So there is possibility of getting another device reset in function mpi_ssp_completion. Signed-off-by: zhuxh <zxh3737@163.com> Acked-by: Lindar Liu <lindar_liu@usish.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/scsi/pm8001')
-rw-r--r--drivers/scsi/pm8001/pm8001_sas.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/scsi/pm8001/pm8001_sas.c b/drivers/scsi/pm8001/pm8001_sas.c
index ba3088c..8a44bc9 100644
--- a/drivers/scsi/pm8001/pm8001_sas.c
+++ b/drivers/scsi/pm8001/pm8001_sas.c
@@ -434,6 +434,7 @@ static int pm8001_task_exec(struct sas_task *task, const int num,
ccb->n_elem = n_elem;
ccb->ccb_tag = tag;
ccb->task = t;
+ ccb->device = pm8001_dev;
switch (t->task_proto) {
case SAS_PROTOCOL_SMP:
rc = pm8001_task_prep_smp(pm8001_ha, ccb);