@@ -2639,8 +2639,10 @@ static int ufshcd_exec_dev_cmd(struct uf
* the maximum wait time is bounded by SCSI request timeout.
*/
req = blk_get_request(q, REQ_OP_DRV_OUT, 0);
- if (IS_ERR(req))
- return PTR_ERR(req);
+ if (IS_ERR(req)) {
+ err = PTR_ERR(req);
+ goto out_unlock;
+ }
tag = req->tag;
WARN_ON_ONCE(!ufshcd_valid_tag(hba, tag));
@@ -2668,6 +2670,7 @@ static int ufshcd_exec_dev_cmd(struct uf
out_put_tag:
blk_put_request(req);
+out_unlock:
up_read(&hba->clk_scaling_lock);
return err;
}
@@ -5842,8 +5845,10 @@ static int ufshcd_issue_devman_upiu_cmd(
down_read(&hba->clk_scaling_lock);
req = blk_get_request(q, REQ_OP_DRV_OUT, 0);
- if (IS_ERR(req))
- return PTR_ERR(req);
+ if (IS_ERR(req)) {
+ err = PTR_ERR(req);
+ goto out_unlock;
+ }
tag = req->tag;
WARN_ON_ONCE(!ufshcd_valid_tag(hba, tag));
@@ -5920,6 +5925,7 @@ static int ufshcd_issue_devman_upiu_cmd(
}
blk_put_request(req);
+out_unlock:
up_read(&hba->clk_scaling_lock);
return err;
}