From 7dcd8f28e88644c595bfc083293e001284d9f0a9 Mon Sep 17 00:00:00 2001 From: ru Date: Wed, 20 Sep 2006 11:43:36 +0000 Subject: Revert back to always using *(int *)arg for now. While this is incorrect, and causes endianness bugs on 64-bit big-endian machines (sparc64), it's the best choice for now, as many of these IOCTLs are used inside the kernel, and bogusly pass an argument as "int *" which results in unaligned access panics on sparc64 when attempting to dereference them via *(intptr_t *). (Several of us are working on a real fix, which is uneasy.) --- sys/dev/kbdmux/kbdmux.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'sys/dev/kbdmux') diff --git a/sys/dev/kbdmux/kbdmux.c b/sys/dev/kbdmux/kbdmux.c index f00d1c6..d058b8a 100644 --- a/sys/dev/kbdmux/kbdmux.c +++ b/sys/dev/kbdmux/kbdmux.c @@ -1051,7 +1051,7 @@ kbdmux_ioctl(keyboard_t *kbd, u_long cmd, caddr_t arg) case KDSKBMODE: /* set keyboard mode */ KBDMUX_LOCK(state); - switch ((int)*(intptr_t *)arg) { + switch (*(int *)arg) { case K_XLATE: if (state->ks_mode != K_XLATE) { /* make lock key state and LED state match */ @@ -1062,9 +1062,9 @@ kbdmux_ioctl(keyboard_t *kbd, u_long cmd, caddr_t arg) case K_RAW: case K_CODE: - if (state->ks_mode != (int)*(intptr_t *)arg) { + if (state->ks_mode != *(int *)arg) { kbdmux_clear_state_locked(state); - state->ks_mode = (int)*(intptr_t *)arg; + state->ks_mode = *(int *)arg; } break; @@ -1086,13 +1086,13 @@ kbdmux_ioctl(keyboard_t *kbd, u_long cmd, caddr_t arg) KBDMUX_LOCK(state); /* NOTE: lock key state in ks_state won't be changed */ - if ((int)*(intptr_t *)arg & ~LOCK_MASK) { + if (*(int *)arg & ~LOCK_MASK) { KBDMUX_UNLOCK(state); return (EINVAL); } - KBD_LED_VAL(kbd) = (int)*(intptr_t *)arg; + KBD_LED_VAL(kbd) = *(int *)arg; /* KDSETLED on all slave keyboards */ SLIST_FOREACH(k, &state->ks_kbds, next) @@ -1110,14 +1110,14 @@ kbdmux_ioctl(keyboard_t *kbd, u_long cmd, caddr_t arg) case KDSKBSTATE: /* set lock key state */ KBDMUX_LOCK(state); - if ((int)*(intptr_t *)arg & ~LOCK_MASK) { + if (*(int *)arg & ~LOCK_MASK) { KBDMUX_UNLOCK(state); return (EINVAL); } state->ks_state &= ~LOCK_MASK; - state->ks_state |= (int)*(intptr_t *)arg; + state->ks_state |= *(int *)arg; /* KDSKBSTATE on all slave keyboards */ SLIST_FOREACH(k, &state->ks_kbds, next) @@ -1147,7 +1147,7 @@ kbdmux_ioctl(keyboard_t *kbd, u_long cmd, caddr_t arg) break; mode |= i; } else - mode = (int)*(intptr_t *)arg; + mode = *(int *)arg; if (mode & ~0x7f) { KBDMUX_UNLOCK(state); -- cgit v1.1