Commit d7ea26ff authored by Steffen Klassert's avatar Steffen Klassert Committed by Greg Kroah-Hartman

ip_tunnel: Don't allow to add the same tunnel multiple times.

[ Upstream commit d61746b2 ]

When we try to add an already existing tunnel, we don't return
an error. Instead we continue and call ip_tunnel_update().
This means that we can change existing tunnels by adding
the same tunnel multiple times. It is even possible to change
the tunnel endpoints of the fallback device.

We fix this by returning an error if we try to add an existing
tunnel.
Signed-off-by: default avatarSteffen Klassert <steffen.klassert@secunet.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent c4cb71c5
...@@ -764,9 +764,14 @@ int ip_tunnel_ioctl(struct net_device *dev, struct ip_tunnel_parm *p, int cmd) ...@@ -764,9 +764,14 @@ int ip_tunnel_ioctl(struct net_device *dev, struct ip_tunnel_parm *p, int cmd)
t = ip_tunnel_find(itn, p, itn->fb_tunnel_dev->type); t = ip_tunnel_find(itn, p, itn->fb_tunnel_dev->type);
if (!t && (cmd == SIOCADDTUNNEL)) { if (cmd == SIOCADDTUNNEL) {
t = ip_tunnel_create(net, itn, p); if (!t) {
err = PTR_ERR_OR_ZERO(t); t = ip_tunnel_create(net, itn, p);
err = PTR_ERR_OR_ZERO(t);
break;
}
err = -EEXIST;
break; break;
} }
if (dev != itn->fb_tunnel_dev && cmd == SIOCCHGTUNNEL) { if (dev != itn->fb_tunnel_dev && cmd == SIOCCHGTUNNEL) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment