diff options
author | Tom Herbert <tom@herbertland.com> | 2016-04-05 08:22:49 -0700 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-04-07 16:53:14 -0400 |
commit | 0340d0b9e0e2dc340acb664f19d6550940b22cde (patch) | |
tree | a93593fee3416349acfe7e8636e766ad60caca0f /include | |
parent | 1fbbe1a8a9b195c4ac856540dfaef49d663c2e91 (diff) | |
download | linux-0340d0b9e0e2dc340acb664f19d6550940b22cde.tar.gz linux-0340d0b9e0e2dc340acb664f19d6550940b22cde.tar.bz2 linux-0340d0b9e0e2dc340acb664f19d6550940b22cde.zip |
net: Checks skb_dst to be NULL in inet_iif
In inet_iif check if skb_rtable is NULL for the skb and return
skb->skb_iif if it is.
This change allows inet_iif to be called before the dst
information has been set in the skb (e.g. when doing socket based
UDP GRO).
Signed-off-by: Tom Herbert <tom@herbertland.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include')
-rw-r--r-- | include/net/route.h | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/include/net/route.h b/include/net/route.h index 9b0a523bb428..f4b11eee1754 100644 --- a/include/net/route.h +++ b/include/net/route.h @@ -322,10 +322,11 @@ static inline struct rtable *ip_route_newports(struct flowi4 *fl4, struct rtable static inline int inet_iif(const struct sk_buff *skb) { - int iif = skb_rtable(skb)->rt_iif; + struct rtable *rt = skb_rtable(skb); + + if (rt && rt->rt_iif) + return rt->rt_iif; - if (iif) - return iif; return skb->skb_iif; } |