[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 3/7] linux-user: Fix shmat(NULL) for h != g
From: |
Richard Henderson |
Subject: |
[PULL 3/7] linux-user: Fix shmat(NULL) for h != g |
Date: |
Fri, 29 Mar 2024 12:20:33 -1000 |
From: Ilya Leoshkevich <iii@linux.ibm.com>
In the h != g && shmaddr == NULL && !reserved_va case, target_shmat()
incorrectly mmap()s the initial anonymous range with
MAP_FIXED_NOREPLACE, even though the earlier mmap_find_vma() has
already reserved the respective address range.
Fix by using MAP_FIXED when "mapped", which is set after
mmap_find_vma(), is true.
Fixes: 78bc8ed9a8f0 ("linux-user: Rewrite target_shmat")
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
Message-Id: <20240325192436.561154-4-iii@linux.ibm.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
linux-user/mmap.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/linux-user/mmap.c b/linux-user/mmap.c
index 4505fd7376..be3b9a68eb 100644
--- a/linux-user/mmap.c
+++ b/linux-user/mmap.c
@@ -1354,7 +1354,7 @@ abi_ulong target_shmat(CPUArchState *cpu_env, int shmid,
if (h_len != t_len) {
int mmap_p = PROT_READ | (shmflg & SHM_RDONLY ? 0 : PROT_WRITE);
int mmap_f = MAP_PRIVATE | MAP_ANONYMOUS
- | (reserved_va || (shmflg & SHM_REMAP)
+ | (reserved_va || mapped || (shmflg & SHM_REMAP)
? MAP_FIXED : MAP_FIXED_NOREPLACE);
test = mmap(want, m_len, mmap_p, mmap_f, -1, 0);
--
2.34.1
- [PULL 0/7] tcg + linux-user patch queue, Richard Henderson, 2024/03/29
- [PULL 2/7] linux-user: Fix shmat() strace, Richard Henderson, 2024/03/29
- [PULL 3/7] linux-user: Fix shmat(NULL) for h != g,
Richard Henderson <=
- [PULL 1/7] linux-user: Fix semctl() strace, Richard Henderson, 2024/03/29
- [PULL 4/7] tests/tcg: Test shmat(NULL), Richard Henderson, 2024/03/29
- [PULL 5/7] tcg/optimize: Fix sign_mask for logical right-shift, Richard Henderson, 2024/03/29
- [PULL 7/7] accel/tcg: Use CPUState.get_pc in cpu_io_recompile, Richard Henderson, 2024/03/29
- [PULL 6/7] disas: Show opcodes for target_disas and monitor_disas, Richard Henderson, 2024/03/29
- Re: [PULL 0/7] tcg + linux-user patch queue, Peter Maydell, 2024/03/31