Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7abe1f6c authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "scsi: ufs: Avoid potential lrb race caused by early release of lrb_in_use"

parents c78df4a6 f0e7e5ba
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -6499,7 +6499,6 @@ static void __ufshcd_transfer_req_compl(struct ufs_hba *hba,
			result = ufshcd_transfer_rsp_status(hba, lrbp);
			scsi_dma_unmap(cmd);
			cmd->result = result;
			clear_bit_unlock(index, &hba->lrb_in_use);
			lrbp->compl_time_stamp = ktime_get();
			update_req_stats(hba, lrbp);
			/* Mark completed command as NULL in LRB */
@@ -6519,6 +6518,8 @@ static void __ufshcd_transfer_req_compl(struct ufs_hba *hba,
					lrbp, cmd->request);
			}

			clear_bit_unlock(index, &hba->lrb_in_use);

			/* Do not touch lrbp after scsi done */
			cmd->scsi_done(cmd);
		} else if (lrbp->command_type == UTP_CMD_TYPE_DEV_MANAGE ||
@@ -6569,7 +6570,6 @@ void ufshcd_abort_outstanding_transfer_requests(struct ufs_hba *hba, int result)
			/* Clear pending transfer requests */
			ufshcd_clear_cmd(hba, index);
			ufshcd_outstanding_req_clear(hba, index);
			clear_bit_unlock(index, &hba->lrb_in_use);
			lrbp->compl_time_stamp = ktime_get();
			update_req_stats(hba, lrbp);
			/* Mark completed command as NULL in LRB */
@@ -6586,6 +6586,7 @@ void ufshcd_abort_outstanding_transfer_requests(struct ufs_hba *hba, int result)
				ufshcd_vops_crypto_engine_cfg_end(hba,
						lrbp, cmd->request);
			}
			clear_bit_unlock(index, &hba->lrb_in_use);
			/* Do not touch lrbp after scsi done */
			cmd->scsi_done(cmd);
		} else if (lrbp->command_type == UTP_CMD_TYPE_DEV_MANAGE) {