diff options
Diffstat (limited to 'net/ipv6/route.c')
-rw-r--r-- | net/ipv6/route.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/net/ipv6/route.c b/net/ipv6/route.c index 5c48293ff062..d3588885f097 100644 --- a/net/ipv6/route.c +++ b/net/ipv6/route.c | |||
@@ -2245,9 +2245,10 @@ int ip6_route_get_saddr(struct net *net, | |||
2245 | unsigned int prefs, | 2245 | unsigned int prefs, |
2246 | struct in6_addr *saddr) | 2246 | struct in6_addr *saddr) |
2247 | { | 2247 | { |
2248 | struct inet6_dev *idev = ip6_dst_idev((struct dst_entry *)rt); | 2248 | struct inet6_dev *idev = |
2249 | rt ? ip6_dst_idev((struct dst_entry *)rt) : NULL; | ||
2249 | int err = 0; | 2250 | int err = 0; |
2250 | if (rt->rt6i_prefsrc.plen) | 2251 | if (rt && rt->rt6i_prefsrc.plen) |
2251 | *saddr = rt->rt6i_prefsrc.addr; | 2252 | *saddr = rt->rt6i_prefsrc.addr; |
2252 | else | 2253 | else |
2253 | err = ipv6_dev_get_saddr(net, idev ? idev->dev : NULL, | 2254 | err = ipv6_dev_get_saddr(net, idev ? idev->dev : NULL, |