* [PATCH] linux-user: fix layout of struct target_msq_id_ds
@ 2025-10-09 12:56 Andreas Schwab
2025-10-09 13:55 ` Philippe Mathieu-Daudé
2025-10-09 15:42 ` Richard Henderson
0 siblings, 2 replies; 5+ messages in thread
From: Andreas Schwab @ 2025-10-09 12:56 UTC (permalink / raw)
To: Laurent Vivier; +Cc: qemu-devel
The msg_lspid and msg_lrpid members are of type pid_t, which is a 32-bit
integer.
Signed-off-by: Andreas Schwab <schwab@suse.de>
---
linux-user/syscall.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 0956a7b310..3dcdb3ef42 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -4185,8 +4185,8 @@ struct target_msqid_ds
abi_ulong __msg_cbytes;
abi_ulong msg_qnum;
abi_ulong msg_qbytes;
- abi_ulong msg_lspid;
- abi_ulong msg_lrpid;
+ unsigned int msg_lspid;
+ unsigned int msg_lrpid;
abi_ulong __unused4;
abi_ulong __unused5;
};
@@ -4206,8 +4206,8 @@ static inline abi_long target_to_host_msqid_ds(struct msqid_ds *host_md,
host_md->__msg_cbytes = tswapal(target_md->__msg_cbytes);
host_md->msg_qnum = tswapal(target_md->msg_qnum);
host_md->msg_qbytes = tswapal(target_md->msg_qbytes);
- host_md->msg_lspid = tswapal(target_md->msg_lspid);
- host_md->msg_lrpid = tswapal(target_md->msg_lrpid);
+ host_md->msg_lspid = tswap32(target_md->msg_lspid);
+ host_md->msg_lrpid = tswap32(target_md->msg_lrpid);
unlock_user_struct(target_md, target_addr, 0);
return 0;
}
@@ -4227,8 +4227,8 @@ static inline abi_long host_to_target_msqid_ds(abi_ulong target_addr,
target_md->__msg_cbytes = tswapal(host_md->__msg_cbytes);
target_md->msg_qnum = tswapal(host_md->msg_qnum);
target_md->msg_qbytes = tswapal(host_md->msg_qbytes);
- target_md->msg_lspid = tswapal(host_md->msg_lspid);
- target_md->msg_lrpid = tswapal(host_md->msg_lrpid);
+ target_md->msg_lspid = tswap32(host_md->msg_lspid);
+ target_md->msg_lrpid = tswap32(host_md->msg_lrpid);
unlock_user_struct(target_md, target_addr, 1);
return 0;
}
--
2.51.0
--
Andreas Schwab, SUSE Labs, schwab@suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE 1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH] linux-user: fix layout of struct target_msq_id_ds
2025-10-09 12:56 [PATCH] linux-user: fix layout of struct target_msq_id_ds Andreas Schwab
@ 2025-10-09 13:55 ` Philippe Mathieu-Daudé
2025-10-09 14:12 ` Andreas Schwab
2025-10-09 15:42 ` Richard Henderson
1 sibling, 1 reply; 5+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-10-09 13:55 UTC (permalink / raw)
To: Andreas Schwab, Laurent Vivier; +Cc: qemu-devel
Hi Andreas,
On 9/10/25 14:56, Andreas Schwab wrote:
> The msg_lspid and msg_lrpid members are of type pid_t, which is a 32-bit
> integer.
>
> Signed-off-by: Andreas Schwab <schwab@suse.de>
> ---
> linux-user/syscall.c | 12 ++++++------
> 1 file changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/linux-user/syscall.c b/linux-user/syscall.c
> index 0956a7b310..3dcdb3ef42 100644
> --- a/linux-user/syscall.c
> +++ b/linux-user/syscall.c
> @@ -4185,8 +4185,8 @@ struct target_msqid_ds
> abi_ulong __msg_cbytes;
> abi_ulong msg_qnum;
> abi_ulong msg_qbytes;
> - abi_ulong msg_lspid;
> - abi_ulong msg_lrpid;
> + unsigned int msg_lspid;
> + unsigned int msg_lrpid;
Why not use the explicit 'uint32_t' type?
> abi_ulong __unused4;
> abi_ulong __unused5;
> };
> @@ -4206,8 +4206,8 @@ static inline abi_long target_to_host_msqid_ds(struct msqid_ds *host_md,
> host_md->__msg_cbytes = tswapal(target_md->__msg_cbytes);
> host_md->msg_qnum = tswapal(target_md->msg_qnum);
> host_md->msg_qbytes = tswapal(target_md->msg_qbytes);
> - host_md->msg_lspid = tswapal(target_md->msg_lspid);
> - host_md->msg_lrpid = tswapal(target_md->msg_lrpid);
> + host_md->msg_lspid = tswap32(target_md->msg_lspid);
> + host_md->msg_lrpid = tswap32(target_md->msg_lrpid);
> unlock_user_struct(target_md, target_addr, 0);
> return 0;
> }
> @@ -4227,8 +4227,8 @@ static inline abi_long host_to_target_msqid_ds(abi_ulong target_addr,
> target_md->__msg_cbytes = tswapal(host_md->__msg_cbytes);
> target_md->msg_qnum = tswapal(host_md->msg_qnum);
> target_md->msg_qbytes = tswapal(host_md->msg_qbytes);
> - target_md->msg_lspid = tswapal(host_md->msg_lspid);
> - target_md->msg_lrpid = tswapal(host_md->msg_lrpid);
> + target_md->msg_lspid = tswap32(host_md->msg_lspid);
> + target_md->msg_lrpid = tswap32(host_md->msg_lrpid);
> unlock_user_struct(target_md, target_addr, 1);
> return 0;
> }
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] linux-user: fix layout of struct target_msq_id_ds
2025-10-09 13:55 ` Philippe Mathieu-Daudé
@ 2025-10-09 14:12 ` Andreas Schwab
0 siblings, 0 replies; 5+ messages in thread
From: Andreas Schwab @ 2025-10-09 14:12 UTC (permalink / raw)
To: Philippe Mathieu-Daudé; +Cc: Laurent Vivier, qemu-devel
On Okt 09 2025, Philippe Mathieu-Daudé wrote:
> Hi Andreas,
>
> On 9/10/25 14:56, Andreas Schwab wrote:
>> The msg_lspid and msg_lrpid members are of type pid_t, which is a 32-bit
>> integer.
>> Signed-off-by: Andreas Schwab <schwab@suse.de>
>> ---
>> linux-user/syscall.c | 12 ++++++------
>> 1 file changed, 6 insertions(+), 6 deletions(-)
>> diff --git a/linux-user/syscall.c b/linux-user/syscall.c
>> index 0956a7b310..3dcdb3ef42 100644
>> --- a/linux-user/syscall.c
>> +++ b/linux-user/syscall.c
>> @@ -4185,8 +4185,8 @@ struct target_msqid_ds
>> abi_ulong __msg_cbytes;
>> abi_ulong msg_qnum;
>> abi_ulong msg_qbytes;
>> - abi_ulong msg_lspid;
>> - abi_ulong msg_lrpid;
>> + unsigned int msg_lspid;
>> + unsigned int msg_lrpid;
>
> Why not use the explicit 'uint32_t' type?
linux-user/syscall.c often just uses int for 32-bit integers, and it's
the same as x86_64/target_syscall.h:struct target_msgid64_ds.
--
Andreas Schwab, SUSE Labs, schwab@suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE 1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] linux-user: fix layout of struct target_msq_id_ds
2025-10-09 12:56 [PATCH] linux-user: fix layout of struct target_msq_id_ds Andreas Schwab
2025-10-09 13:55 ` Philippe Mathieu-Daudé
@ 2025-10-09 15:42 ` Richard Henderson
2025-10-09 15:46 ` Richard Henderson
1 sibling, 1 reply; 5+ messages in thread
From: Richard Henderson @ 2025-10-09 15:42 UTC (permalink / raw)
To: qemu-devel
On 10/9/25 05:56, Andreas Schwab wrote:
> The msg_lspid and msg_lrpid members are of type pid_t, which is a 32-bit
> integer.
>
> Signed-off-by: Andreas Schwab <schwab@suse.de>
> ---
> linux-user/syscall.c | 12 ++++++------
> 1 file changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/linux-user/syscall.c b/linux-user/syscall.c
> index 0956a7b310..3dcdb3ef42 100644
> --- a/linux-user/syscall.c
> +++ b/linux-user/syscall.c
> @@ -4185,8 +4185,8 @@ struct target_msqid_ds
> abi_ulong __msg_cbytes;
> abi_ulong msg_qnum;
> abi_ulong msg_qbytes;
> - abi_ulong msg_lspid;
> - abi_ulong msg_lrpid;
> + unsigned int msg_lspid;
> + unsigned int msg_lrpid;
This should be target_pid_t.
r~
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] linux-user: fix layout of struct target_msq_id_ds
2025-10-09 15:42 ` Richard Henderson
@ 2025-10-09 15:46 ` Richard Henderson
0 siblings, 0 replies; 5+ messages in thread
From: Richard Henderson @ 2025-10-09 15:46 UTC (permalink / raw)
To: qemu-devel
On 10/9/25 08:42, Richard Henderson wrote:
> On 10/9/25 05:56, Andreas Schwab wrote:
>> The msg_lspid and msg_lrpid members are of type pid_t, which is a 32-bit
>> integer.
>>
>> Signed-off-by: Andreas Schwab <schwab@suse.de>
>> ---
>> linux-user/syscall.c | 12 ++++++------
>> 1 file changed, 6 insertions(+), 6 deletions(-)
>>
>> diff --git a/linux-user/syscall.c b/linux-user/syscall.c
>> index 0956a7b310..3dcdb3ef42 100644
>> --- a/linux-user/syscall.c
>> +++ b/linux-user/syscall.c
>> @@ -4185,8 +4185,8 @@ struct target_msqid_ds
>> abi_ulong __msg_cbytes;
>> abi_ulong msg_qnum;
>> abi_ulong msg_qbytes;
>> - abi_ulong msg_lspid;
>> - abi_ulong msg_lrpid;
>> + unsigned int msg_lspid;
>> + unsigned int msg_lrpid;
>
> This should be target_pid_t.
Ho hum, target_pid_t is private to elfload.c.
Since this is
include/uapi/asm-generic/posix_types.h:typedef int __kernel_ipc_pid_t;
include/uapi/linux/msg.h: __kernel_ipc_pid_t msg_lspid; /* pid of last msgsnd */
include/uapi/linux/msg.h: __kernel_ipc_pid_t msg_lrpid; /* last receive pid */
I.e. not really just pid_t, then let's go ahead and use abi_int and have a comment.
r~
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2025-10-09 15:48 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-10-09 12:56 [PATCH] linux-user: fix layout of struct target_msq_id_ds Andreas Schwab
2025-10-09 13:55 ` Philippe Mathieu-Daudé
2025-10-09 14:12 ` Andreas Schwab
2025-10-09 15:42 ` Richard Henderson
2025-10-09 15:46 ` Richard Henderson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).