[PATCH] linux-user: fix matching ioctl numbers in print_ioctl

Andreas Schwab posted 1 patch 9 hours ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/mvmldh19bja.fsf@suse.de
Maintainers: Laurent Vivier <laurent@vivier.eu>, Pierrick Bouvier <pierrick.bouvier@linaro.org>
linux-user/strace.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
[PATCH] linux-user: fix matching ioctl numbers in print_ioctl
Posted by Andreas Schwab 9 hours ago
target_cmd in struct IOCTLEntry is a signed int.  Make sure the ioctl cmd
argument in the syscall is converted to int when matching, so that it
works correctly with an ioctl cmd that has bit 31 set.

Signed-off-by: Andreas Schwab <schwab@suse.de>
---
 linux-user/strace.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/linux-user/strace.c b/linux-user/strace.c
index ca67cfd09d..8e026e5d8e 100644
--- a/linux-user/strace.c
+++ b/linux-user/strace.c
@@ -1017,12 +1017,12 @@ print_syscall_ret_ioctl(CPUArchState *cpu_env, const struct syscallname *name,
         int target_size;
 
         for (ie = ioctl_entries; ie->target_cmd != 0; ie++) {
-            if (ie->target_cmd == arg1) {
+            if (ie->target_cmd == (int)arg1) {
                 break;
             }
         }
 
-        if (ie->target_cmd == arg1 &&
+        if (ie->target_cmd == (int)arg1 &&
            (ie->access == IOC_R || ie->access == IOC_RW)) {
             arg_type = ie->arg_type;
             qemu_log(" (");
@@ -4338,7 +4338,7 @@ print_ioctl(CPUArchState *cpu_env, const struct syscallname *name,
     int target_size;
 
     for (ie = ioctl_entries; ie->target_cmd != 0; ie++) {
-        if (ie->target_cmd == arg1) {
+        if (ie->target_cmd == (int)arg1) {
             break;
         }
     }
-- 
2.53.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."
Re: [PATCH] linux-user: fix matching ioctl numbers in print_ioctl
Posted by Helge Deller 3 hours ago
On 2/10/26 10:46, Andreas Schwab wrote:
> target_cmd in struct IOCTLEntry is a signed int.  Make sure the ioctl cmd
> argument in the syscall is converted to int when matching, so that it
> works correctly with an ioctl cmd that has bit 31 set.
> 
> Signed-off-by: Andreas Schwab <schwab@suse.de>

Reviewed-by: Helge Deller <deller@gmx.de>

Helge