scsi: ufs: Adjust ufshcd_hold() during sending attribute requests
Invalidation check of arguments should have been checked before ufshcd_hold(). This can help to prevent ufshcd_hold()/ ufshcd_release() from being invoked unnecessarily. [mkp: removed unused out: labels] Link: https://lore.kernel.org/r/1606973132-5937-1-git-send-email-user@jang-Samsung-DeskTop-System Reviewed-by: Stanley Chu <stanley.chu@mediatek.com> Signed-off-by: jintae jang <jt77.jang@samsung.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
ace3804b69
commit
8ca1a40b9f
|
@ -2975,14 +2975,14 @@ int ufshcd_query_attr(struct ufs_hba *hba, enum query_opcode opcode,
|
|||
|
||||
BUG_ON(!hba);
|
||||
|
||||
ufshcd_hold(hba, false);
|
||||
if (!attr_val) {
|
||||
dev_err(hba->dev, "%s: attribute value required for opcode 0x%x\n",
|
||||
__func__, opcode);
|
||||
err = -EINVAL;
|
||||
goto out;
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
ufshcd_hold(hba, false);
|
||||
|
||||
mutex_lock(&hba->dev_cmd.lock);
|
||||
ufshcd_init_query(hba, &request, &response, opcode, idn, index,
|
||||
selector);
|
||||
|
@ -3014,7 +3014,6 @@ int ufshcd_query_attr(struct ufs_hba *hba, enum query_opcode opcode,
|
|||
|
||||
out_unlock:
|
||||
mutex_unlock(&hba->dev_cmd.lock);
|
||||
out:
|
||||
ufshcd_release(hba);
|
||||
return err;
|
||||
}
|
||||
|
@ -3066,21 +3065,20 @@ static int __ufshcd_query_descriptor(struct ufs_hba *hba,
|
|||
|
||||
BUG_ON(!hba);
|
||||
|
||||
ufshcd_hold(hba, false);
|
||||
if (!desc_buf) {
|
||||
dev_err(hba->dev, "%s: descriptor buffer required for opcode 0x%x\n",
|
||||
__func__, opcode);
|
||||
err = -EINVAL;
|
||||
goto out;
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (*buf_len < QUERY_DESC_MIN_SIZE || *buf_len > QUERY_DESC_MAX_SIZE) {
|
||||
dev_err(hba->dev, "%s: descriptor buffer size (%d) is out of range\n",
|
||||
__func__, *buf_len);
|
||||
err = -EINVAL;
|
||||
goto out;
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
ufshcd_hold(hba, false);
|
||||
|
||||
mutex_lock(&hba->dev_cmd.lock);
|
||||
ufshcd_init_query(hba, &request, &response, opcode, idn, index,
|
||||
selector);
|
||||
|
@ -3115,7 +3113,6 @@ static int __ufshcd_query_descriptor(struct ufs_hba *hba,
|
|||
out_unlock:
|
||||
hba->dev_cmd.query.descriptor = NULL;
|
||||
mutex_unlock(&hba->dev_cmd.lock);
|
||||
out:
|
||||
ufshcd_release(hba);
|
||||
return err;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue