ip6_vti: Return an error when adding an existing tunnel.
[firefly-linux-kernel-4.4.55.git] / net / ipv6 / ip6_vti.c
index 7f52fd9fa7b0d694dfa35f6246133d379f8ea710..5833a2244467325caff4f75f5740adc809db235b 100644 (file)
@@ -253,8 +253,12 @@ static struct ip6_tnl *vti6_locate(struct net *net, struct __ip6_tnl_parm *p,
             (t = rtnl_dereference(*tp)) != NULL;
             tp = &t->next) {
                if (ipv6_addr_equal(local, &t->parms.laddr) &&
-                   ipv6_addr_equal(remote, &t->parms.raddr))
+                   ipv6_addr_equal(remote, &t->parms.raddr)) {
+                       if (create)
+                               return NULL;
+
                        return t;
+               }
        }
        if (!create)
                return NULL;