@samitouri / QOSamiQemu / commits / 518a4aa01b

linux-user: fix incorrect msg_l[sr]pid members of target_msqid_ds

The members are declared as __kernel_pid_t in Linux UAPI headers. Analogous members in struct target_shmid_ds (shm_[cl]pid) are also declared as abi_int. Cc: qemu-stable@nongnu.org Fixes: 1c54ff97bbde ("linux-user: fix and cleanup IPCOP_msg* ipc calls handling") Signed-off-by: no92 <leo@managarm.org> Reviewed-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com> Signed-off-by: Helge Deller <deller@gmx.de>

no92 committed Jul 24, 2026 at 18:01 UTC 518a4aa01b88ff814dbf8668016f3ec910426283
1 file changed +6 -6
linux-user/syscall.c
+6 -6
@@ -4228,8 +4228,8 @@ struct target_msqid_ds
4228 abi_ulong __msg_cbytes;
4229 abi_ulong msg_qnum;
4230 abi_ulong msg_qbytes;
4231 - abi_ulong msg_lspid;
4232 - abi_ulong msg_lrpid;
4231 + abi_int msg_lspid;
4232 + abi_int msg_lrpid;
4233 abi_ulong __unused4;
4234 abi_ulong __unused5;
4235 };
@@ -4249,8 +4249,8 @@ static inline abi_long target_to_host_msqid_ds(struct msqid_ds *host_md,
4249 host_md->__msg_cbytes = tswapal(target_md->__msg_cbytes);
4250 host_md->msg_qnum = tswapal(target_md->msg_qnum);
4251 host_md->msg_qbytes = tswapal(target_md->msg_qbytes);
4252 - host_md->msg_lspid = tswapal(target_md->msg_lspid);
4253 - host_md->msg_lrpid = tswapal(target_md->msg_lrpid);
4252 + host_md->msg_lspid = tswap32(target_md->msg_lspid);
4253 + host_md->msg_lrpid = tswap32(target_md->msg_lrpid);
4254 unlock_user_struct(target_md, target_addr, 0);
4255 return 0;
4256 }
@@ -4270,8 +4270,8 @@ static inline abi_long host_to_target_msqid_ds(abi_ulong target_addr,
4270 target_md->__msg_cbytes = tswapal(host_md->__msg_cbytes);
4271 target_md->msg_qnum = tswapal(host_md->msg_qnum);
4272 target_md->msg_qbytes = tswapal(host_md->msg_qbytes);
4273 - target_md->msg_lspid = tswapal(host_md->msg_lspid);
4274 - target_md->msg_lrpid = tswapal(host_md->msg_lrpid);
4273 + target_md->msg_lspid = tswap32(host_md->msg_lspid);
4274 + target_md->msg_lrpid = tswap32(host_md->msg_lrpid);
4275 unlock_user_struct(target_md, target_addr, 1);
4276 return 0;
4277 }