[NETNS]: Process devinet ioctl in the correct namespace.
Add namespace parameter to devinet_ioctl and locate device inside it for state changes. Signed-off-by: Denis V. Lunev <den@openvz.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
73b3871165
commit
e5b13cb10d
@@ -784,6 +784,7 @@ int inet_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
|
||||
{
|
||||
struct sock *sk = sock->sk;
|
||||
int err = 0;
|
||||
struct net *net = sk->sk_net;
|
||||
|
||||
switch (cmd) {
|
||||
case SIOCGSTAMP:
|
||||
@@ -795,12 +796,12 @@ int inet_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
|
||||
case SIOCADDRT:
|
||||
case SIOCDELRT:
|
||||
case SIOCRTMSG:
|
||||
err = ip_rt_ioctl(sk->sk_net, cmd, (void __user *)arg);
|
||||
err = ip_rt_ioctl(net, cmd, (void __user *)arg);
|
||||
break;
|
||||
case SIOCDARP:
|
||||
case SIOCGARP:
|
||||
case SIOCSARP:
|
||||
err = arp_ioctl(sk->sk_net, cmd, (void __user *)arg);
|
||||
err = arp_ioctl(net, cmd, (void __user *)arg);
|
||||
break;
|
||||
case SIOCGIFADDR:
|
||||
case SIOCSIFADDR:
|
||||
@@ -813,7 +814,7 @@ int inet_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
|
||||
case SIOCSIFPFLAGS:
|
||||
case SIOCGIFPFLAGS:
|
||||
case SIOCSIFFLAGS:
|
||||
err = devinet_ioctl(cmd, (void __user *)arg);
|
||||
err = devinet_ioctl(net, cmd, (void __user *)arg);
|
||||
break;
|
||||
default:
|
||||
if (sk->sk_prot->ioctl)
|
||||
|
Reference in New Issue
Block a user