]> git.proxmox.com Git - mirror_qemu.git/commit
linux-user: Fix ioctl cmd type mismatch on 64-bit targets
authorEd Swierk <eswierk@skyportsystems.com>
Tue, 16 Dec 2014 20:55:31 +0000 (12:55 -0800)
committerRiku Voipio <riku.voipio@linaro.org>
Tue, 27 Jan 2015 20:33:57 +0000 (22:33 +0200)
commit9c6bf9c7d71d7da18a024182b69569969449d6f9
tree328fb981bf2a6730b5630f530b5bde0f8745eb8e
parent95018018caeea209f58695645fd1d50a9d0ba6df
linux-user: Fix ioctl cmd type mismatch on 64-bit targets

linux-user passes the cmd argument of the ioctl syscall as a signed long,
but compares it to an unsigned int when iterating through the ioctl_entries
list.  When the cmd is a large value like 0x80047476 (TARGET_TIOCSWINSZ on
mips64) it gets sign-extended to 0xffffffff80047476, causing the comparison
to fail and resulting in lots of spurious "Unsupported ioctl" errors.
Changing the target_cmd field in the ioctl_entries list to a signed int
causes those values to be sign-extended as well during the comparison.

Signed-off-by: Ed Swierk <eswierk@skyportsystems.com>
Signed-off-by: Riku Voipio <riku.voipio@linaro.org>
linux-user/syscall.c