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

Commit a6768f02 authored by Wenchao Chen's avatar Wenchao Chen Committed by Lee Jones
Browse files

UPSTREAM: mmc: hsq: Fix data stomping during mmc recovery



The block device uses multiple queues to access emmc. There will be up to 3
requests in the hsq of the host. The current code will check whether there
is a request doing recovery before entering the queue, but it will not check
whether there is a request when the lock is issued. The request is in recovery
mode. If there is a request in recovery, then a read and write request is
initiated at this time, and the conflict between the request and the recovery
request will cause the data to be trampled.

Bug: 254441685
Signed-off-by: default avatarWenchao Chen <wenchao.chen@unisoc.com>
Fixes: 511ce378e16f ("mmc: Add MMC host software queue support")
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/r/20220916090506.10662-1-wenchao.chen666@gmail.com


Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
(cherry picked from commit e7afa79a3b35a27a046a2139f8b20bd6b98155c2)
Signed-off-by: default avatarLee Jones <joneslee@google.com>
Change-Id: I031ad3f8e41937a6285926f9b87592f510ba9d7c
parent c08e708d
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -34,7 +34,7 @@ static void mmc_hsq_pump_requests(struct mmc_hsq *hsq)
	spin_lock_irqsave(&hsq->lock, flags);

	/* Make sure we are not already running a request now */
	if (hsq->mrq) {
	if (hsq->mrq || hsq->recovery_halt) {
		spin_unlock_irqrestore(&hsq->lock, flags);
		return;
	}