[lvc-project] Fwd: Patch "efi: fix potential NULL deref in efi_mem_reserve_persistent" has been added to the 5.10-stable tree

Anton Gusev aagusev at ispras.ru
Mon Feb 6 18:18:44 MSK 2023




-------- Forwarded Message --------
Subject: Patch "efi: fix potential NULL deref in efi_mem_reserve_persistent" has been added to the 5.10-stable tree
Date: Mon,  6 Feb 2023 08:46:46 -0500
From: Sasha Levin <sashal at kernel.org>
To: stable-commits at vger.kernel.org, aagusev at ispras.ru
CC: Ard Biesheuvel <ardb at kernel.org>

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

    efi: fix potential NULL deref in efi_mem_reserve_persistent

to the 5.10-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:
     efi-fix-potential-null-deref-in-efi_mem_reserve_pers.patch
and it can be found in the queue-5.10 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable at vger.kernel.org> know about it.



commit 4f98fa3b85a2debdd8cb2f3bc17a03311abdaef9
Author: Anton Gusev <aagusev at ispras.ru>
Date:   Fri Feb 3 16:22:13 2023 +0300

    efi: fix potential NULL deref in efi_mem_reserve_persistent
    
    [ Upstream commit 966d47e1f27c45507c5df82b2a2157e5a4fd3909 ]
    
    When iterating on a linked list, a result of memremap is dereferenced
    without checking it for NULL.
    
    This patch adds a check that falls back on allocating a new page in
    case memremap doesn't succeed.
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    Fixes: 18df7577adae ("efi/memreserve: deal with memreserve entries in unmapped memory")
    Signed-off-by: Anton Gusev <aagusev at ispras.ru>
    [ardb: return -ENOMEM instead of breaking out of the loop]
    Signed-off-by: Ard Biesheuvel <ardb at kernel.org>
    Signed-off-by: Sasha Levin <sashal at kernel.org>

diff --git a/drivers/firmware/efi/efi.c b/drivers/firmware/efi/efi.c
index a2765d668856..332739f3eded 100644
--- a/drivers/firmware/efi/efi.c
+++ b/drivers/firmware/efi/efi.c
@@ -950,6 +950,8 @@ int __ref efi_mem_reserve_persistent(phys_addr_t addr, u64 size)
 	/* first try to find a slot in an existing linked list entry */
 	for (prsv = efi_memreserve_root->next; prsv; ) {
 		rsv = memremap(prsv, sizeof(*rsv), MEMREMAP_WB);
+		if (!rsv)
+			return -ENOMEM;
 		index = atomic_fetch_add_unless(&rsv->count, 1, rsv->size);
 		if (index < rsv->size) {
 			rsv->entry[index].base = addr;



More information about the lvc-project mailing list