On 6/24/19 6:14 PM, Stephen Suryaputra wrote:
> In commit 19e4e768064a8 ("ipv4: Fix raw socket lookup for local
> traffic"), the dif argument to __raw_v4_lookup() is coming from the
> returned value of inet_iif() but the change was done only for the first
> lookup. Subsequent lookups in the while loop still use skb->dev->ifIndex.
> 
> Signed-off-by: Stephen Suryaputra <ssuryae...@gmail.com>
> ---
>  net/ipv4/raw.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/net/ipv4/raw.c b/net/ipv4/raw.c
> index 0b8e06ca75d6..40a6abbc9cf6 100644
> --- a/net/ipv4/raw.c
> +++ b/net/ipv4/raw.c
> @@ -197,7 +197,7 @@ static int raw_v4_input(struct sk_buff *skb, const struct 
> iphdr *iph, int hash)
>               }
>               sk = __raw_v4_lookup(net, sk_next(sk), iph->protocol,
>                                    iph->saddr, iph->daddr,
> -                                  skb->dev->ifindex, sdif);
> +                                  dif, sdif);
>       }
>  out:
>       read_unlock(&raw_v4_hashinfo.lock);
> 

ugh, missed that in 19e4e768064a8; thanks for the patch.

Reviewed-by: David Ahern <dsah...@gmail.com>

Reply via email to