[PATCH] linux-user: Fix do_shmat type errors

Richard Henderson posted 1 patch 10 months, 3 weeks ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20230626140250.69572-1-richard.henderson@linaro.org
Maintainers: Laurent Vivier <laurent@vivier.eu>
linux-user/syscall.c | 13 ++++++-------
1 file changed, 6 insertions(+), 7 deletions(-)
[PATCH] linux-user: Fix do_shmat type errors
Posted by Richard Henderson 10 months, 3 weeks ago
The guest address, raddr, should be unsigned, aka abi_ulong.
The host addresses should be cast via *intptr_t not long.
Drop the inline and fix two other whitespace issues.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 linux-user/syscall.c | 13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)

diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index f2cb101d83..59b530547a 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -4528,14 +4528,14 @@ static inline abi_ulong target_shmlba(CPUArchState *cpu_env)
 }
 #endif
 
-static inline abi_ulong do_shmat(CPUArchState *cpu_env,
-                                 int shmid, abi_ulong shmaddr, int shmflg)
+static abi_ulong do_shmat(CPUArchState *cpu_env, int shmid,
+                          abi_ulong shmaddr, int shmflg)
 {
     CPUState *cpu = env_cpu(cpu_env);
-    abi_long raddr;
+    abi_ulong raddr;
     void *host_raddr;
     struct shmid_ds shm_info;
-    int i,ret;
+    int i, ret;
     abi_ulong shmlba;
 
     /* shmat pointers are always untagged */
@@ -4591,9 +4591,9 @@ static inline abi_ulong do_shmat(CPUArchState *cpu_env,
 
     if (host_raddr == (void *)-1) {
         mmap_unlock();
-        return get_errno((long)host_raddr);
+        return get_errno((intptr_t)host_raddr);
     }
-    raddr=h2g((unsigned long)host_raddr);
+    raddr = h2g((uintptr_t)host_raddr);
 
     page_set_flags(raddr, raddr + shm_info.shm_segsz - 1,
                    PAGE_VALID | PAGE_RESET | PAGE_READ |
@@ -4610,7 +4610,6 @@ static inline abi_ulong do_shmat(CPUArchState *cpu_env,
 
     mmap_unlock();
     return raddr;
-
 }
 
 static inline abi_long do_shmdt(abi_ulong shmaddr)
-- 
2.34.1
Re: [PATCH] linux-user: Fix do_shmat type errors
Posted by Philippe Mathieu-Daudé 10 months, 3 weeks ago
On 26/6/23 16:02, Richard Henderson wrote:
> The guest address, raddr, should be unsigned, aka abi_ulong.
> The host addresses should be cast via *intptr_t not long.
> Drop the inline and fix two other whitespace issues.
> 
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
>   linux-user/syscall.c | 13 ++++++-------
>   1 file changed, 6 insertions(+), 7 deletions(-)

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>


Re: [PATCH] linux-user: Fix do_shmat type errors
Posted by Anton Johansson via 10 months, 3 weeks ago
On 6/26/23 16:02, Richard Henderson wrote:
> The guest address, raddr, should be unsigned, aka abi_ulong.
> The host addresses should be cast via *intptr_t not long.
> Drop the inline and fix two other whitespace issues.
>
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
>   linux-user/syscall.c | 13 ++++++-------
>   1 file changed, 6 insertions(+), 7 deletions(-)
Reviewed-by: Anton Johansson <anjo@rev.ng>