aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/net/dst.h5
-rw-r--r--net/xfrm/xfrm_policy.c2
2 files changed, 6 insertions, 1 deletions
diff --git a/include/net/dst.h b/include/net/dst.h
index e86b9a008ebf..aaa2dbb50179 100644
--- a/include/net/dst.h
+++ b/include/net/dst.h
@@ -265,6 +265,11 @@ static inline struct dst_entry *dst_check(struct dst_entry *dst, u32 cookie)
265 265
266extern void dst_init(void); 266extern void dst_init(void);
267 267
268/* Flags for xfrm_lookup flags argument. */
269enum {
270 XFRM_LOOKUP_WAIT = 1 << 0,
271};
272
268struct flowi; 273struct flowi;
269#ifndef CONFIG_XFRM 274#ifndef CONFIG_XFRM
270static inline int xfrm_lookup(struct dst_entry **dst_p, struct flowi *fl, 275static inline int xfrm_lookup(struct dst_entry **dst_p, struct flowi *fl,
diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c
index 95dc581861e8..3d516d57b5b2 100644
--- a/net/xfrm/xfrm_policy.c
+++ b/net/xfrm/xfrm_policy.c
@@ -1565,7 +1565,7 @@ restart:
1565 xfrm_pol_put(policy); 1565 xfrm_pol_put(policy);
1566 return -EREMOTE; 1566 return -EREMOTE;
1567 } 1567 }
1568 if (err == -EAGAIN && flags) { 1568 if (err == -EAGAIN && (flags & XFRM_LOOKUP_WAIT)) {
1569 DECLARE_WAITQUEUE(wait, current); 1569 DECLARE_WAITQUEUE(wait, current);
1570 1570
1571 add_wait_queue(&km_waitq, &wait); 1571 add_wait_queue(&km_waitq, &wait);