Re: [PATCH] ip_tunnel: fix ip_tunnel_lookup

From: David Miller
Date: Tue Jul 08 2014 - 18:12:19 EST


From: Dmitry Popov <ixaphire@xxxxxxxxxx>
Date: Sat, 5 Jul 2014 02:26:37 +0400

> @@ -205,6 +207,8 @@ struct ip_tunnel *ip_tunnel_lookup(struct ip_tunnel_net *itn,
>
> hlist_for_each_entry_rcu(t, head, hash_node) {
> if (t->parms.i_key != key ||
> + t->parms.iph.saddr != 0 ||
> + t->parms.iph.daddr != 0 ||
> !(t->dev->flags & IFF_UP))
> continue;
>

I don't really understand the logic of these tests.

Usually the canonical way to test these kinds of things is:

if (parms->saddr && parms->saddr != saddr)
goto no_match;

But you are signalling a non-match any time the address is not a
wildcard.

Why?
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/