[PATCH] net/ipsec: don't treat EINPROGRESS as a regular error

Sebastian Andrzej Siewior sebastian at breakpoint.cc
Sat Apr 24 10:42:15 EDT 2010


a driver might drop EINPROGRESS because its internal queue is full and
not because something went wrong. In that case there will be another
call back invocation and the stack should not free the skb.

Signed-off-by: Sebastian Andrzej Siewior <sebastian at breakpoint.cc>
---
 net/xfrm/xfrm_output.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/net/xfrm/xfrm_output.c b/net/xfrm/xfrm_output.c
index 6a32915..34dd460 100644
--- a/net/xfrm/xfrm_output.c
+++ b/net/xfrm/xfrm_output.c
@@ -86,10 +86,10 @@ static int xfrm_output_one(struct sk_buff *skb, int err)
 		spin_unlock_bh(&x->lock);
 
 		err = x->type->output(x, skb);
+resume:
 		if (err == -EINPROGRESS)
 			goto out_exit;
 
-resume:
 		if (err) {
 			XFRM_INC_STATS(net, LINUX_MIB_XFRMOUTSTATEPROTOERROR);
 			goto error_nolock;
-- 
1.6.6.1




More information about the linux-arm-kernel mailing list