diff options
-rw-r--r-- | include/net/dst.h | 5 | ||||
-rw-r--r-- | net/xfrm/xfrm_policy.c | 2 |
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 | ||
266 | extern void dst_init(void); | 266 | extern void dst_init(void); |
267 | 267 | ||
268 | /* Flags for xfrm_lookup flags argument. */ | ||
269 | enum { | ||
270 | XFRM_LOOKUP_WAIT = 1 << 0, | ||
271 | }; | ||
272 | |||
268 | struct flowi; | 273 | struct flowi; |
269 | #ifndef CONFIG_XFRM | 274 | #ifndef CONFIG_XFRM |
270 | static inline int xfrm_lookup(struct dst_entry **dst_p, struct flowi *fl, | 275 | static 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); |