summaryrefslogtreecommitdiff
path: root/vm
diff options
context:
space:
mode:
authorLuca Dariz <luca@orpolo.org>2022-06-28 12:10:44 +0200
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2022-08-28 02:54:32 +0200
commit14cf1efc9dfa388c3dfec3815abd114f2a36bd38 (patch)
tree2a303b17c42411720645943044315215fc6839e3 /vm
parent5e3913bb0abaac77f672366280d71503e6bb0f45 (diff)
sign-extend mask in vm_map() with 32-bit userspace
* vm/vm_user.c: sign-extend mask with USER32 Signed-off-by: Luca Dariz <luca@orpolo.org> Message-Id: <20220628101054.446126-6-luca@orpolo.org>
Diffstat (limited to 'vm')
-rw-r--r--vm/vm_user.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/vm/vm_user.c b/vm/vm_user.c
index 3ef64dfc..9e789eba 100644
--- a/vm/vm_user.c
+++ b/vm/vm_user.c
@@ -338,6 +338,11 @@ kern_return_t vm_map(
if (size == 0)
return KERN_INVALID_ARGUMENT;
+#ifdef USER32
+ if (mask & 0x80000000)
+ mask |= 0xffffffff00000000;
+#endif
+
*address = trunc_page(*address);
size = round_page(size);