diff options
Diffstat (limited to 'drivers/scsi/libsas/sas_expander.c')
-rw-r--r-- | drivers/scsi/libsas/sas_expander.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/scsi/libsas/sas_expander.c b/drivers/scsi/libsas/sas_expander.c index ca1566237ae7..3183d63de4da 100644 --- a/drivers/scsi/libsas/sas_expander.c +++ b/drivers/scsi/libsas/sas_expander.c | |||
@@ -2145,7 +2145,7 @@ void sas_smp_handler(struct bsg_job *job, struct Scsi_Host *shost, | |||
2145 | struct sas_rphy *rphy) | 2145 | struct sas_rphy *rphy) |
2146 | { | 2146 | { |
2147 | struct domain_device *dev; | 2147 | struct domain_device *dev; |
2148 | unsigned int reslen = 0; | 2148 | unsigned int rcvlen = 0; |
2149 | int ret = -EINVAL; | 2149 | int ret = -EINVAL; |
2150 | 2150 | ||
2151 | /* no rphy means no smp target support (ie aic94xx host) */ | 2151 | /* no rphy means no smp target support (ie aic94xx host) */ |
@@ -2179,12 +2179,12 @@ void sas_smp_handler(struct bsg_job *job, struct Scsi_Host *shost, | |||
2179 | 2179 | ||
2180 | ret = smp_execute_task_sg(dev, job->request_payload.sg_list, | 2180 | ret = smp_execute_task_sg(dev, job->request_payload.sg_list, |
2181 | job->reply_payload.sg_list); | 2181 | job->reply_payload.sg_list); |
2182 | if (ret > 0) { | 2182 | if (ret >= 0) { |
2183 | /* positive number is the untransferred residual */ | 2183 | /* bsg_job_done() requires the length received */ |
2184 | reslen = ret; | 2184 | rcvlen = job->reply_payload.payload_len - ret; |
2185 | ret = 0; | 2185 | ret = 0; |
2186 | } | 2186 | } |
2187 | 2187 | ||
2188 | out: | 2188 | out: |
2189 | bsg_job_done(job, ret, reslen); | 2189 | bsg_job_done(job, ret, rcvlen); |
2190 | } | 2190 | } |