summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorZishun Yi <vulab@iscas.ac.cn>2026-03-22 19:00:22 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2026-04-11 15:26:33 +0300
commit50392cdfe95e0cd40b03ed95b50d3d53be3fa624 (patch)
tree4b3117bc6432b3d29f16dc0cd4a9ba72554bd9b3 /arch
parente1425ff578c4a4b83654402071de4413af71e2ad (diff)
downloadlinux-50392cdfe95e0cd40b03ed95b50d3d53be3fa624.tar.xz
riscv: Reset pmm when PR_TAGGED_ADDR_ENABLE is not set
[ Upstream commit 3033b2b1e3949274f33a140e2a97571b5a307298 ] In set_tagged_addr_ctrl(), when PR_TAGGED_ADDR_ENABLE is not set, pmlen is correctly set to 0, but it forgets to reset pmm. This results in the CPU pmm state not corresponding to the software pmlen state. Fix this by resetting pmm along with pmlen. Fixes: 2e1743085887 ("riscv: Add support for the tagged address ABI") Signed-off-by: Zishun Yi <vulab@iscas.ac.cn> Reviewed-by: Samuel Holland <samuel.holland@sifive.com> Link: https://patch.msgid.link/20260322160022.21908-1-vulab@iscas.ac.cn Signed-off-by: Paul Walmsley <pjw@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'arch')
-rw-r--r--arch/riscv/kernel/process.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/arch/riscv/kernel/process.c b/arch/riscv/kernel/process.c
index 31a392993cb4..b5188dc74727 100644
--- a/arch/riscv/kernel/process.c
+++ b/arch/riscv/kernel/process.c
@@ -324,8 +324,10 @@ long set_tagged_addr_ctrl(struct task_struct *task, unsigned long arg)
if (arg & PR_TAGGED_ADDR_ENABLE && (tagged_addr_disabled || !pmlen))
return -EINVAL;
- if (!(arg & PR_TAGGED_ADDR_ENABLE))
+ if (!(arg & PR_TAGGED_ADDR_ENABLE)) {
pmlen = PMLEN_0;
+ pmm = ENVCFG_PMM_PMLEN_0;
+ }
if (mmap_write_lock_killable(mm))
return -EINTR;