riscv: read-only pages should not be writable
authorHeinrich Schuchardt <heinrich.schuchardt@canonical.com>
Sat, 28 May 2022 01:41:32 +0000 (03:41 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 14 Jun 2022 16:36:11 +0000 (18:36 +0200)
[ Upstream commit 630f972d76d6460235e84e1aa034ee06f9c8c3a9 ]

If EFI pages are marked as read-only,
we should remove the _PAGE_WRITE flag.

The current code overwrites an unused value.

Fixes: b91540d52a08b ("RISC-V: Add EFI runtime services")
Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Link: https://lore.kernel.org/r/20220528014132.91052-1-heinrich.schuchardt@canonical.com
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
arch/riscv/kernel/efi.c

index 0241592982314471dfd9e28cfc76fd398c1edba5..1aa540350abd31b077f10660f7862aa77e4c819c 100644 (file)
@@ -65,7 +65,7 @@ static int __init set_permissions(pte_t *ptep, unsigned long addr, void *data)
 
        if (md->attribute & EFI_MEMORY_RO) {
                val = pte_val(pte) & ~_PAGE_WRITE;
-               val = pte_val(pte) | _PAGE_READ;
+               val |= _PAGE_READ;
                pte = __pte(val);
        }
        if (md->attribute & EFI_MEMORY_XP) {