diff --git a/net/ipv6/ip6_gre.c b/net/ipv6/ip6_gre.c
index d172ec4ec9d32ed18aff913dcb507ffdac0860ff..f304471477dce45bcb8fc71f842ae8c27032f609 100644
--- a/net/ipv6/ip6_gre.c
+++ b/net/ipv6/ip6_gre.c
@@ -314,6 +314,8 @@ static struct ip6_tnl *ip6gre_tunnel_locate(struct net *net,
 	struct ip6gre_net *ign = net_generic(net, ip6gre_net_id);
 
 	t = ip6gre_tunnel_find(net, parms, ARPHRD_IP6GRE);
+	if (t && create)
+		return NULL;
 	if (t || !create)
 		return t;