]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
drivers/scsi/ufs: fix incorrect return value about SUCCESS and FAILED
authorNamjae Jeon <linkinjeon@gmail.com>
Thu, 3 May 2012 05:43:26 +0000 (15:43 +1000)
committerStephen Rothwell <sfr@canb.auug.org.au>
Thu, 3 May 2012 05:46:19 +0000 (15:46 +1000)
Currently the UFS host driver has returned incorrect values for SUCCESS
and FAILED.  Fix it to return the correct value to the upper layer.

Signed-off-by: Namjae Jeon <linkinjeon@gmail.com>
Acked-by: Santosh Y <santoshsy@gmail.com>
Cc: James Bottomley <James.Bottomley@HansenPartnership.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
drivers/scsi/ufs/ufshcd.c

index 5ab9b3fb1854004c7018bc72e1d461369da98864..3cb7a08bde2df6f4974b402277dcc41b129bd83c 100644 (file)
@@ -1163,6 +1163,8 @@ static int ufshcd_task_req_compl(struct ufs_hba *hba, u32 index)
                if (task_result != UPIU_TASK_MANAGEMENT_FUNC_COMPL &&
                    task_result != UPIU_TASK_MANAGEMENT_FUNC_SUCCEEDED)
                        task_result = FAILED;
+               else
+                       task_result = SUCCESS;
        } else {
                task_result = FAILED;
                dev_err(&hba->pdev->dev,
@@ -1556,7 +1558,7 @@ ufshcd_issue_tm_cmd(struct ufs_hba *hba,
                goto out;
        }
        clear_bit(free_slot, &hba->tm_condition);
-       return ufshcd_task_req_compl(hba, free_slot);
+       err = ufshcd_task_req_compl(hba, free_slot);
 out:
        return err;
 }
@@ -1580,7 +1582,7 @@ static int ufshcd_device_reset(struct scsi_cmnd *cmd)
        tag = cmd->request->tag;
 
        err = ufshcd_issue_tm_cmd(hba, &hba->lrb[tag], UFS_LOGICAL_RESET);
-       if (err)
+       if (err == FAILED)
                goto out;
 
        for (pos = 0; pos < hba->nutrs; pos++) {
@@ -1620,7 +1622,7 @@ static int ufshcd_host_reset(struct scsi_cmnd *cmd)
        if (hba->ufshcd_state == UFSHCD_STATE_RESET)
                return SUCCESS;
 
-       return (ufshcd_do_reset(hba) == SUCCESS) ? SUCCESS : FAILED;
+       return ufshcd_do_reset(hba);
 }
 
 /**
@@ -1652,7 +1654,7 @@ static int ufshcd_abort(struct scsi_cmnd *cmd)
        spin_unlock_irqrestore(host->host_lock, flags);
 
        err = ufshcd_issue_tm_cmd(hba, &hba->lrb[tag], UFS_ABORT_TASK);
-       if (err)
+       if (err == FAILED)
                goto out;
 
        scsi_dma_unmap(cmd);