Commit e47b1ffff9 for qemu.org

commit e47b1ffff92b62a32838b39e8512e69a225ed200
Author: Andreas Schwab <schwab@suse.de>
Date:   Tue Feb 10 10:46:01 2026 +0100

    linux-user: fix matching ioctl numbers in print_ioctl

    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>
    Signed-off-by: Helge Deller <deller@gmx.de>

diff --git a/linux-user/strace.c b/linux-user/strace.c
index 02d610a7f8..2cbaf94c89 100644
--- a/linux-user/strace.c
+++ b/linux-user/strace.c
@@ -1021,12 +1021,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(" (");
@@ -4359,7 +4359,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;
         }
     }