From: Andrew Morton Signed-off-by: Shaun Pereira Acked-by: Arnd Bergmann Signed-off-by: Andrew Morton --- net/x25/af_x25.c | 132 ++++++++++++++++++++++----------------------- 1 files changed, 67 insertions(+), 65 deletions(-) diff -puN net/x25/af_x25.c~x25-ioctl-conversion-32-bit-user-to-64-bit-kernel-tidy net/x25/af_x25.c --- devel/net/x25/af_x25.c~x25-ioctl-conversion-32-bit-user-to-64-bit-kernel-tidy 2006-02-17 00:41:04.000000000 -0800 +++ devel-akpm/net/x25/af_x25.c 2006-02-17 00:41:04.000000000 -0800 @@ -54,8 +54,9 @@ #include /* For TIOCINQ/OUTQ */ #include #include -#include #include + +#include #include int sysctl_x25_restart_request_timeout = X25_DEFAULT_T20; @@ -1399,7 +1400,7 @@ static struct net_proto_family x25_famil #ifdef CONFIG_COMPAT static int compat_x25_subscr_ioctl(unsigned int cmd, - struct compat_x25_subscrip_struct __user *x25_subscr32) + struct compat_x25_subscrip_struct __user *x25_subscr32) { struct compat_x25_subscrip_struct x25_subscr; struct x25_neigh *nb; @@ -1407,29 +1408,31 @@ static int compat_x25_subscr_ioctl(unsig int rc = -EINVAL; rc = -EFAULT; - if(copy_from_user(&x25_subscr, x25_subscr32, sizeof(*x25_subscr32))) + if (copy_from_user(&x25_subscr, x25_subscr32, sizeof(*x25_subscr32))) goto out; rc = -EINVAL; - if ((dev = x25_dev_get(x25_subscr.device)) == NULL) + dev = x25_dev_get(x25_subscr.device); + if (dev == NULL) goto out; - if ((nb = x25_get_neigh(dev)) == NULL) + nb = x25_get_neigh(dev); + if (dev == NULL) goto out_dev_put; dev_put(dev); - if(cmd == SIOCX25GSUBSCRIP) { - x25_subscr.extended = nb->extended; - x25_subscr.global_facil_mask = nb->global_facil_mask; + if (cmd == SIOCX25GSUBSCRIP) { + x25_subscr.extended = nb->extended; + x25_subscr.global_facil_mask = nb->global_facil_mask; rc = copy_to_user(x25_subscr32, &x25_subscr, - sizeof(*x25_subscr32)) ? -EFAULT : 0; + sizeof(*x25_subscr32)) ? -EFAULT : 0; } else { rc = -EINVAL; - if (!(x25_subscr.extended && x25_subscr.extended != 1)) { + if (x25_subscr.extended == 0 || x25_subscr.extended == 1) { rc = 0; - nb->extended = x25_subscr.extended; - nb->global_facil_mask = x25_subscr.global_facil_mask; + nb->extended = x25_subscr.extended; + nb->global_facil_mask = x25_subscr.global_facil_mask; } } x25_neigh_put(nb); @@ -1440,7 +1443,8 @@ out_dev_put: goto out; } -static int compat_x25_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg) +static int compat_x25_ioctl(struct socket *sock, unsigned int cmd, + unsigned long arg) { void __user *argp = compat_ptr(arg); struct sock *sk = sock->sk; @@ -1448,62 +1452,60 @@ static int compat_x25_ioctl(struct socke int rc = -ENOIOCTLCMD; switch(cmd) { - case TIOCOUTQ: - case TIOCINQ: - rc = x25_ioctl(sock, cmd, (unsigned long)argp); - break; - case SIOCGSTAMP: - rc = -EINVAL; - if (sk) - rc = compat_sock_get_timestamp(sk, + case TIOCOUTQ: + case TIOCINQ: + rc = x25_ioctl(sock, cmd, (unsigned long)argp); + break; + case SIOCGSTAMP: + rc = -EINVAL; + if (sk) + rc = compat_sock_get_timestamp(sk, (struct timeval __user*)argp); - break; - case SIOCGIFADDR: - case SIOCSIFADDR: - case SIOCGIFDSTADDR: - case SIOCSIFDSTADDR: - case SIOCGIFBRDADDR: - case SIOCSIFBRDADDR: - case SIOCGIFNETMASK: - case SIOCSIFNETMASK: - case SIOCGIFMETRIC: - case SIOCSIFMETRIC: - rc = -EINVAL; - break; - case SIOCADDRT: - case SIOCDELRT: - rc = -EPERM; - if(!capable(CAP_NET_ADMIN)) - break; - rc = x25_route_ioctl(cmd, argp); - break; - case SIOCX25GSUBSCRIP: - rc = compat_x25_subscr_ioctl(cmd, argp); - break; - case SIOCX25SSUBSCRIP: - rc = -EPERM; - if (!capable(CAP_NET_ADMIN)) - break; - rc = compat_x25_subscr_ioctl(cmd, argp); - break; - case SIOCX25GFACILITIES: - case SIOCX25SFACILITIES: - case SIOCX25GCALLUSERDATA: - case SIOCX25SCALLUSERDATA: - case SIOCX25GCAUSEDIAG: - case SIOCX25SCUDMATCHLEN: - case SIOCX25CALLACCPTAPPRV: - case SIOCX25SENDCALLACCPT: - rc = x25_ioctl(sock, cmd, (unsigned long)argp); - break; - default: - rc = -ENOIOCTLCMD; - break; + break; + case SIOCGIFADDR: + case SIOCSIFADDR: + case SIOCGIFDSTADDR: + case SIOCSIFDSTADDR: + case SIOCGIFBRDADDR: + case SIOCSIFBRDADDR: + case SIOCGIFNETMASK: + case SIOCSIFNETMASK: + case SIOCGIFMETRIC: + case SIOCSIFMETRIC: + rc = -EINVAL; + break; + case SIOCADDRT: + case SIOCDELRT: + rc = -EPERM; + if (!capable(CAP_NET_ADMIN)) + break; + rc = x25_route_ioctl(cmd, argp); + break; + case SIOCX25GSUBSCRIP: + rc = compat_x25_subscr_ioctl(cmd, argp); + break; + case SIOCX25SSUBSCRIP: + rc = -EPERM; + if (!capable(CAP_NET_ADMIN)) + break; + rc = compat_x25_subscr_ioctl(cmd, argp); + break; + case SIOCX25GFACILITIES: + case SIOCX25SFACILITIES: + case SIOCX25GCALLUSERDATA: + case SIOCX25SCALLUSERDATA: + case SIOCX25GCAUSEDIAG: + case SIOCX25SCUDMATCHLEN: + case SIOCX25CALLACCPTAPPRV: + case SIOCX25SENDCALLACCPT: + rc = x25_ioctl(sock, cmd, (unsigned long)argp); + break; + default: + rc = -ENOIOCTLCMD; + break; } - return rc; } - #endif static const struct proto_ops SOCKOPS_WRAPPED(x25_proto_ops) = { _