RDMA/srp: Do not call scsi_done() from srp_abort()
[linux-2.6-block.git] / drivers / infiniband / ulp / srp / ib_srp.c
index 0e513a7e5ac808999f3541ef141f43d700fd6150..2916e77f589b813c6f9f0608f4081c719463cfe0 100644 (file)
@@ -1979,12 +1979,8 @@ static void srp_process_rsp(struct srp_rdma_ch *ch, struct srp_rsp *rsp)
 
                if (unlikely(rsp->flags & SRP_RSP_FLAG_DIUNDER))
                        scsi_set_resid(scmnd, be32_to_cpu(rsp->data_in_res_cnt));
-               else if (unlikely(rsp->flags & SRP_RSP_FLAG_DIOVER))
-                       scsi_set_resid(scmnd, -be32_to_cpu(rsp->data_in_res_cnt));
                else if (unlikely(rsp->flags & SRP_RSP_FLAG_DOUNDER))
                        scsi_set_resid(scmnd, be32_to_cpu(rsp->data_out_res_cnt));
-               else if (unlikely(rsp->flags & SRP_RSP_FLAG_DOOVER))
-                       scsi_set_resid(scmnd, -be32_to_cpu(rsp->data_out_res_cnt));
 
                srp_free_req(ch, req, scmnd,
                             be32_to_cpu(rsp->req_lim_delta));
@@ -2788,7 +2784,6 @@ static int srp_abort(struct scsi_cmnd *scmnd)
        u32 tag;
        u16 ch_idx;
        struct srp_rdma_ch *ch;
-       int ret;
 
        shost_printk(KERN_ERR, target->scsi_host, "SRP abort called\n");
 
@@ -2802,19 +2797,14 @@ static int srp_abort(struct scsi_cmnd *scmnd)
        shost_printk(KERN_ERR, target->scsi_host,
                     "Sending SRP abort for tag %#x\n", tag);
        if (srp_send_tsk_mgmt(ch, tag, scmnd->device->lun,
-                             SRP_TSK_ABORT_TASK, NULL) == 0)
-               ret = SUCCESS;
-       else if (target->rport->state == SRP_RPORT_LOST)
-               ret = FAST_IO_FAIL;
-       else
-               ret = FAILED;
-       if (ret == SUCCESS) {
+                             SRP_TSK_ABORT_TASK, NULL) == 0) {
                srp_free_req(ch, req, scmnd, 0);
-               scmnd->result = DID_ABORT << 16;
-               scsi_done(scmnd);
+               return SUCCESS;
        }
+       if (target->rport->state == SRP_RPORT_LOST)
+               return FAST_IO_FAIL;
 
-       return ret;
+       return FAILED;
 }
 
 static int srp_reset_device(struct scsi_cmnd *scmnd)