linux-user: Clear translations on mprotect()
Currently it's possible to execute pages that do not have PAGE_EXEC
if there is an existing translation block. Fix by invalidating TBs
that touch the affected pages.
Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
Message-Id: <20220817150506.592862-2-iii@linux.ibm.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
diff --git a/linux-user/mmap.c b/linux-user/mmap.c
index 048c413..6a828e8 100644
--- a/linux-user/mmap.c
+++ b/linux-user/mmap.c
@@ -177,9 +177,11 @@
goto error;
}
}
+
page_set_flags(start, start + len, page_flags);
- mmap_unlock();
- return 0;
+ tb_invalidate_phys_range(start, start + len);
+ ret = 0;
+
error:
mmap_unlock();
return ret;