Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
[linux-2.6-microblaze.git] / net / ipv6 / ip6_gre.c
index 7a5e90e..7baf41d 100644 (file)
@@ -1246,8 +1246,9 @@ static void ip6gre_tnl_parm_to_user(struct ip6_tnl_parm2 *u,
        memcpy(u->name, p->name, sizeof(u->name));
 }
 
-static int ip6gre_tunnel_ioctl(struct net_device *dev,
-       struct ifreq *ifr, int cmd)
+static int ip6gre_tunnel_siocdevprivate(struct net_device *dev,
+                                       struct ifreq *ifr, void __user *data,
+                                       int cmd)
 {
        int err = 0;
        struct ip6_tnl_parm2 p;
@@ -1261,7 +1262,7 @@ static int ip6gre_tunnel_ioctl(struct net_device *dev,
        switch (cmd) {
        case SIOCGETTUNNEL:
                if (dev == ign->fb_tunnel_dev) {
-                       if (copy_from_user(&p, ifr->ifr_ifru.ifru_data, sizeof(p))) {
+                       if (copy_from_user(&p, data, sizeof(p))) {
                                err = -EFAULT;
                                break;
                        }
@@ -1272,7 +1273,7 @@ static int ip6gre_tunnel_ioctl(struct net_device *dev,
                }
                memset(&p, 0, sizeof(p));
                ip6gre_tnl_parm_to_user(&p, &t->parms);
-               if (copy_to_user(ifr->ifr_ifru.ifru_data, &p, sizeof(p)))
+               if (copy_to_user(data, &p, sizeof(p)))
                        err = -EFAULT;
                break;
 
@@ -1283,7 +1284,7 @@ static int ip6gre_tunnel_ioctl(struct net_device *dev,
                        goto done;
 
                err = -EFAULT;
-               if (copy_from_user(&p, ifr->ifr_ifru.ifru_data, sizeof(p)))
+               if (copy_from_user(&p, data, sizeof(p)))
                        goto done;
 
                err = -EINVAL;
@@ -1320,7 +1321,7 @@ static int ip6gre_tunnel_ioctl(struct net_device *dev,
 
                        memset(&p, 0, sizeof(p));
                        ip6gre_tnl_parm_to_user(&p, &t->parms);
-                       if (copy_to_user(ifr->ifr_ifru.ifru_data, &p, sizeof(p)))
+                       if (copy_to_user(data, &p, sizeof(p)))
                                err = -EFAULT;
                } else
                        err = (cmd == SIOCADDTUNNEL ? -ENOBUFS : -ENOENT);
@@ -1333,7 +1334,7 @@ static int ip6gre_tunnel_ioctl(struct net_device *dev,
 
                if (dev == ign->fb_tunnel_dev) {
                        err = -EFAULT;
-                       if (copy_from_user(&p, ifr->ifr_ifru.ifru_data, sizeof(p)))
+                       if (copy_from_user(&p, data, sizeof(p)))
                                goto done;
                        err = -ENOENT;
                        ip6gre_tnl_parm_from_user(&p1, &p);
@@ -1400,7 +1401,7 @@ static const struct net_device_ops ip6gre_netdev_ops = {
        .ndo_init               = ip6gre_tunnel_init,
        .ndo_uninit             = ip6gre_tunnel_uninit,
        .ndo_start_xmit         = ip6gre_tunnel_xmit,
-       .ndo_do_ioctl           = ip6gre_tunnel_ioctl,
+       .ndo_siocdevprivate     = ip6gre_tunnel_siocdevprivate,
        .ndo_change_mtu         = ip6_tnl_change_mtu,
        .ndo_get_stats64        = dev_get_tstats64,
        .ndo_get_iflink         = ip6_tnl_get_iflink,