diff options
Diffstat (limited to 'net/ipv4/route.c')
-rw-r--r-- | net/ipv4/route.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/net/ipv4/route.c b/net/ipv4/route.c index 1ac3ecaf36e8..78462658fccb 100644 --- a/net/ipv4/route.c +++ b/net/ipv4/route.c | |||
@@ -2720,7 +2720,7 @@ static int ipv4_dst_blackhole(struct net *net, struct rtable **rp, struct flowi | |||
2720 | } | 2720 | } |
2721 | 2721 | ||
2722 | int ip_route_output_flow(struct net *net, struct rtable **rp, struct flowi *flp, | 2722 | int ip_route_output_flow(struct net *net, struct rtable **rp, struct flowi *flp, |
2723 | struct sock *sk, bool can_sleep) | 2723 | struct sock *sk) |
2724 | { | 2724 | { |
2725 | int err; | 2725 | int err; |
2726 | 2726 | ||
@@ -2733,7 +2733,8 @@ int ip_route_output_flow(struct net *net, struct rtable **rp, struct flowi *flp, | |||
2733 | if (!flp->fl4_dst) | 2733 | if (!flp->fl4_dst) |
2734 | flp->fl4_dst = (*rp)->rt_dst; | 2734 | flp->fl4_dst = (*rp)->rt_dst; |
2735 | err = __xfrm_lookup(net, (struct dst_entry **)rp, flp, sk, | 2735 | err = __xfrm_lookup(net, (struct dst_entry **)rp, flp, sk, |
2736 | can_sleep ? XFRM_LOOKUP_WAIT : 0); | 2736 | ((flp->flags & FLOWI_FLAG_CAN_SLEEP) ? |
2737 | XFRM_LOOKUP_WAIT : 0)); | ||
2737 | if (err == -EREMOTE) | 2738 | if (err == -EREMOTE) |
2738 | err = ipv4_dst_blackhole(net, rp, flp); | 2739 | err = ipv4_dst_blackhole(net, rp, flp); |
2739 | 2740 | ||
@@ -2746,7 +2747,7 @@ EXPORT_SYMBOL_GPL(ip_route_output_flow); | |||
2746 | 2747 | ||
2747 | int ip_route_output_key(struct net *net, struct rtable **rp, struct flowi *flp) | 2748 | int ip_route_output_key(struct net *net, struct rtable **rp, struct flowi *flp) |
2748 | { | 2749 | { |
2749 | return ip_route_output_flow(net, rp, flp, NULL, false); | 2750 | return ip_route_output_flow(net, rp, flp, NULL); |
2750 | } | 2751 | } |
2751 | EXPORT_SYMBOL(ip_route_output_key); | 2752 | EXPORT_SYMBOL(ip_route_output_key); |
2752 | 2753 | ||