#include <linux/compat.h>
#include <asm/kbio.h>
-/* Use this to get at 32-bit user passed pointers. */
-#define A(__x) \
-({ unsigned long __ret; \
- __asm__ ("srl %0, 0, %0" \
- : "=r" (__ret) \
- : "0" (__x)); \
- __ret; \
-})
-
#define SUNOS_NR_OPEN 256
struct rtentry32 {
if(cmd == TIOCSETD) {
mm_segment_t old_fs = get_fs();
- int *p, ntty = N_TTY;
+ int __user *p;
+ int ntty = N_TTY;
int tmp;
- p = (int *)A(arg);
+ p = (int __user *) (unsigned long) arg;
ret = -EFAULT;
if(get_user(tmp, p))
goto out;
/* Non posix grp */
case _IOW('t', 118, int): {
- int oldval, newval, *ptr;
+ int oldval, newval, __user *ptr;
cmd = TIOCSPGRP;
- ptr = (int *) A(arg);
+ ptr = (int __user *) (unsigned long) arg;
ret = -EFAULT;
if(get_user(oldval, ptr))
goto out;
}
case _IOR('t', 119, int): {
- int oldval, newval, *ptr;
+ int oldval, newval, __user *ptr;
cmd = TIOCGPGRP;
- ptr = (int *) A(arg);
+ ptr = (int __user *) (unsigned long) arg;
ret = -EFAULT;
if(get_user(oldval, ptr))
goto out;