| From foo@baz Fri Nov 18 11:35:46 CET 2016 |
| From: David Ahern <dsa@cumulusnetworks.com> |
| Date: Thu, 3 Nov 2016 16:17:26 -0700 |
| Subject: net: icmp6_send should use dst dev to determine L3 domain |
| |
| From: David Ahern <dsa@cumulusnetworks.com> |
| |
| |
| [ Upstream commit 5d41ce29e3b91ef305f88d23f72b3359de329cec ] |
| |
| icmp6_send is called in response to some event. The skb may not have |
| the device set (skb->dev is NULL), but it is expected to have a dst set. |
| Update icmp6_send to use the dst on the skb to determine L3 domain. |
| |
| Fixes: ca254490c8dfd ("net: Add VRF support to IPv6 stack") |
| Signed-off-by: David Ahern <dsa@cumulusnetworks.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| net/ipv6/icmp.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/net/ipv6/icmp.c |
| +++ b/net/ipv6/icmp.c |
| @@ -448,7 +448,7 @@ static void icmp6_send(struct sk_buff *s |
| if (__ipv6_addr_needs_scope_id(addr_type)) |
| iif = skb->dev->ifindex; |
| else |
| - iif = l3mdev_master_ifindex(skb->dev); |
| + iif = l3mdev_master_ifindex(skb_dst(skb)->dev); |
| |
| /* |
| * Must not send error if the source does not uniquely |