[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v7 49/74] linux-user: Remove sentinel from ioctl_ent
From: |
Richard Henderson |
Subject: |
[Qemu-devel] [PATCH v7 49/74] linux-user: Remove sentinel from ioctl_entries |
Date: |
Sun, 19 May 2019 13:37:01 -0700 |
Iterate based on the size of the array instead.
Signed-off-by: Richard Henderson <address@hidden>
---
linux-user/syscall-ioctl.inc.c | 14 +++++++-------
linux-user/syscall.c | 6 ++----
2 files changed, 9 insertions(+), 11 deletions(-)
diff --git a/linux-user/syscall-ioctl.inc.c b/linux-user/syscall-ioctl.inc.c
index 15d87b9663..fc7df62017 100644
--- a/linux-user/syscall-ioctl.inc.c
+++ b/linux-user/syscall-ioctl.inc.c
@@ -773,7 +773,6 @@ static IOCTLEntry ioctl_entries[] = {
#define IOCTL_IGNORE(cmd) \
{ TARGET_ ## cmd, 0, #cmd },
#include "ioctls.h"
- { 0, 0, },
};
/* ??? Implement proper locking for ioctls. */
@@ -789,16 +788,17 @@ SYSCALL_IMPL(ioctl)
int target_size;
void *argptr;
- for (ie = ioctl_entries; ; ie++) {
- if (ie->target_cmd == 0) {
- gemu_log("Unsupported ioctl: cmd=0x%04x\n", cmd);
- return -TARGET_ENOSYS;
- }
+ for (ie = ioctl_entries;
+ ie < ioctl_entries + ARRAY_SIZE(ioctl_entries);
+ ie++) {
if (ie->target_cmd == cmd) {
- break;
+ goto found;
}
}
+ gemu_log("Unsupported ioctl: cmd=0x%04x\n", cmd);
+ return -TARGET_ENOSYS;
+ found:
arg_type = ie->arg_type;
if (ie->do_ioctl) {
return ie->do_ioctl(ie, buf_temp, fd, cmd, arg);
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 8f90affe2f..5871d3e711 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -8173,7 +8173,6 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1,
void syscall_init(void)
{
- IOCTLEntry *ie;
const argtype *arg_type;
int size;
int i;
@@ -8203,8 +8202,8 @@ void syscall_init(void)
* We patch the ioctl size if necessary. We rely on the fact that
* no ioctl has all the bits at '1' in the size field.
*/
- ie = ioctl_entries;
- while (ie->target_cmd != 0) {
+ for (i = 0; i < ARRAY_SIZE(ioctl_entries); i++) {
+ IOCTLEntry *ie = &ioctl_entries[i];
if (((ie->target_cmd >> TARGET_IOC_SIZESHIFT) & TARGET_IOC_SIZEMASK) ==
TARGET_IOC_SIZEMASK) {
arg_type = ie->arg_type;
@@ -8228,6 +8227,5 @@ void syscall_init(void)
ie->name, ie->target_cmd, ie->host_cmd);
}
#endif
- ie++;
}
}
--
2.17.1
- [Qemu-devel] [PATCH v7 38/74] linux-user: Split out sync, syncfs, (continued)
- [Qemu-devel] [PATCH v7 38/74] linux-user: Split out sync, syncfs, Richard Henderson, 2019/05/19
- [Qemu-devel] [PATCH v7 42/74] linux-user: Split out dup, dup2, dup3, Richard Henderson, 2019/05/19
- [Qemu-devel] [PATCH v7 40/74] linux-user: Split out rename, renameat, renameat2, Richard Henderson, 2019/05/19
- [Qemu-devel] [PATCH v7 41/74] linux-user: Split out mkdir, mkdirat, Richard Henderson, 2019/05/19
- [Qemu-devel] [PATCH v7 45/74] linux-user: Split out acct, Richard Henderson, 2019/05/19
- [Qemu-devel] [PATCH v7 39/74] linux-user: Split out kill, Richard Henderson, 2019/05/19
- [Qemu-devel] [PATCH v7 46/74] linux-user: Move syscall_init to the end, Richard Henderson, 2019/05/19
- [Qemu-devel] [PATCH v7 44/74] linux-user: Split out times, Richard Henderson, 2019/05/19
- [Qemu-devel] [PATCH v7 43/74] linux-user: Split out pipe, pipe2, Richard Henderson, 2019/05/19
- [Qemu-devel] [PATCH v7 48/74] linux-user: Fix types in ioctl logging, Richard Henderson, 2019/05/19
- [Qemu-devel] [PATCH v7 49/74] linux-user: Remove sentinel from ioctl_entries,
Richard Henderson <=
- [Qemu-devel] [PATCH v7 51/74] linux-user: Split out setpgid, Richard Henderson, 2019/05/19
- [Qemu-devel] [PATCH v7 50/74] linux-user: Split out fcntl, fcntl64, Richard Henderson, 2019/05/19
- [Qemu-devel] [PATCH v7 53/74] linux-user: Split out chroot, Richard Henderson, 2019/05/19
- [Qemu-devel] [PATCH v7 57/74] linux-user: Split out sgetmask, ssetmask, Richard Henderson, 2019/05/19
- [Qemu-devel] [PATCH v7 56/74] linux-user: Split out sigaction, rt_sigaction, Richard Henderson, 2019/05/19
- [Qemu-devel] [PATCH v7 58/74] linux-user: Split out sigprocmask, rt_sigprocmask, Richard Henderson, 2019/05/19
- [Qemu-devel] [PATCH v7 60/74] linux-user: Split out sigsuspend, rt_sigsuspend, Richard Henderson, 2019/05/19
- [Qemu-devel] [PATCH v7 55/74] linux-user: Split out getsid, setsid, Richard Henderson, 2019/05/19
- [Qemu-devel] [PATCH v7 47/74] linux-user: Split out ioctl, Richard Henderson, 2019/05/19
- [Qemu-devel] [PATCH v7 54/74] linux-user: Split out getpgid, getpgrp, Richard Henderson, 2019/05/19