All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dev Jain <dev.jain@arm.com>
To: catalin.marinas@arm.com, will@kernel.org
Cc: ryan.roberts@arm.com, rppt@kernel.org,
	shijie@os.amperecomputing.com, yang@os.amperecomputing.com,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, Dev Jain <dev.jain@arm.com>
Subject: [PATCH 1/2] arm64/pageattr: Propagate return value from __change_memory_common
Date: Wed, 12 Nov 2025 11:57:15 +0530	[thread overview]
Message-ID: <20251112062716.64801-2-dev.jain@arm.com> (raw)
In-Reply-To: <20251112062716.64801-1-dev.jain@arm.com>

The rodata=on security measure requires that any code path which does
vmalloc -> set_memory_ro/set_memory_rox must protect the linear map alias
too. Therefore, if such a call fails, we must abort set_memory_* and caller
must take appropriate action; currently we are suppressing the error, and
there is a real chance of such an error arising post commit a166563e7ec3
("arm64: mm: support large block mapping when rodata=full"). Therefore,
propagate any error to the caller.

Fixes: a166563e7ec3 ("arm64: mm: support large block mapping when rodata=full")
Signed-off-by: Dev Jain <dev.jain@arm.com>
---
v1 of this patch: https://lore.kernel.org/all/20251103061306.82034-1-dev.jain@arm.com/
I have dropped stable since no real chance of failure was there.

 arch/arm64/mm/pageattr.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/arch/arm64/mm/pageattr.c b/arch/arm64/mm/pageattr.c
index 5135f2d66958..b4ea86cd3a71 100644
--- a/arch/arm64/mm/pageattr.c
+++ b/arch/arm64/mm/pageattr.c
@@ -148,6 +148,7 @@ static int change_memory_common(unsigned long addr, int numpages,
 	unsigned long size = PAGE_SIZE * numpages;
 	unsigned long end = start + size;
 	struct vm_struct *area;
+	int ret;
 	int i;
 
 	if (!PAGE_ALIGNED(addr)) {
@@ -185,8 +186,10 @@ static int change_memory_common(unsigned long addr, int numpages,
 	if (rodata_full && (pgprot_val(set_mask) == PTE_RDONLY ||
 			    pgprot_val(clear_mask) == PTE_RDONLY)) {
 		for (i = 0; i < area->nr_pages; i++) {
-			__change_memory_common((u64)page_address(area->pages[i]),
+			ret = __change_memory_common((u64)page_address(area->pages[i]),
 					       PAGE_SIZE, set_mask, clear_mask);
+			if (ret)
+				return ret;
 		}
 	}
 
-- 
2.30.2



  reply	other threads:[~2025-11-12  6:27 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-11-12  6:27 [PATCH 0/2] arm64/mm: A fix and a documentation bit for change_memory_common() Dev Jain
2025-11-12  6:27 ` Dev Jain [this message]
2025-11-12 22:27   ` [PATCH 1/2] arm64/pageattr: Propagate return value from __change_memory_common Yang Shi
2025-11-19 18:06     ` Catalin Marinas
2025-11-19 19:33       ` Yang Shi
2025-11-13 11:55   ` Ryan Roberts
2025-11-13 17:38     ` Yang Shi
2025-11-24 15:11     ` Will Deacon
2025-11-24 18:09       ` Ryan Roberts
2025-11-24 19:10         ` Will Deacon
2025-11-19 18:03   ` Catalin Marinas
2025-11-20  4:10     ` Dev Jain
2025-11-12  6:27 ` [PATCH 2/2] arm64/mm: Document why linear map split failure upon vm_reset_perms is not problematic Dev Jain
2025-11-12 22:34   ` Yang Shi
2025-11-13 12:25   ` Ryan Roberts
2025-11-28 15:52 ` [PATCH 0/2] arm64/mm: A fix and a documentation bit for change_memory_common() Catalin Marinas

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20251112062716.64801-2-dev.jain@arm.com \
    --to=dev.jain@arm.com \
    --cc=catalin.marinas@arm.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rppt@kernel.org \
    --cc=ryan.roberts@arm.com \
    --cc=shijie@os.amperecomputing.com \
    --cc=will@kernel.org \
    --cc=yang@os.amperecomputing.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.