Patch "mmc: core: Use GFP_NOIO in ACMD22" has been added to the 6.12-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    mmc: core: Use GFP_NOIO in ACMD22

to the 6.12-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     mmc-core-use-gfp_noio-in-acmd22.patch
and it can be found in the queue-6.12 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit ee08aec3bc7711cd95a18718fc2198a90fd0d708
Author: Avri Altman <avri.altman@xxxxxxx>
Date:   Mon Oct 21 18:32:27 2024 +0300

    mmc: core: Use GFP_NOIO in ACMD22
    
    [ Upstream commit 869d37475788b0044bec1a33335e24abaf5e8884 ]
    
    While reviewing the SDUC series, Adrian made a comment concerning the
    memory allocation code in mmc_sd_num_wr_blocks() - see [1].
    Prevent memory allocations from triggering I/O operations while ACMD22
    is in progress.
    
    [1] https://lore.kernel.org/linux-mmc/3016fd71-885b-4ef9-97ed-46b4b0cb0e35@xxxxxxxxx/
    
    Suggested-by: Adrian Hunter <adrian.hunter@xxxxxxxxx>
    Reviewed-by: Adrian Hunter <adrian.hunter@xxxxxxxxx>
    Fixes: 051913dada04 ("mmc_block: do not DMA to stack")
    Signed-off-by: Avri Altman <avri.altman@xxxxxxx>
    Cc: stable@xxxxxxxxxxxxxxx
    Message-ID: <20241021153227.493970-1-avri.altman@xxxxxxx>
    Signed-off-by: Ulf Hansson <ulf.hansson@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/mmc/core/block.c b/drivers/mmc/core/block.c
index 64ae6116b1fa0..1d08009f2bd83 100644
--- a/drivers/mmc/core/block.c
+++ b/drivers/mmc/core/block.c
@@ -995,6 +995,8 @@ static int mmc_sd_num_wr_blocks(struct mmc_card *card, u32 *written_blocks)
 	u32 result;
 	__be32 *blocks;
 	u8 resp_sz = mmc_card_ult_capacity(card) ? 8 : 4;
+	unsigned int noio_flag;
+
 	struct mmc_request mrq = {};
 	struct mmc_command cmd = {};
 	struct mmc_data data = {};
@@ -1018,7 +1020,9 @@ static int mmc_sd_num_wr_blocks(struct mmc_card *card, u32 *written_blocks)
 	mrq.cmd = &cmd;
 	mrq.data = &data;
 
+	noio_flag = memalloc_noio_save();
 	blocks = kmalloc(resp_sz, GFP_KERNEL);
+	memalloc_noio_restore(noio_flag);
 	if (!blocks)
 		return -ENOMEM;
 




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux