[PATCH] net/ipsec: don't treat EINPROGRESS as a regular error
Sebastian Andrzej Siewior
sebastian at breakpoint.cc
Sun Apr 25 11:29:28 EDT 2010
* Herbert Xu | 2010-04-25 09:18:21 [+0800]:
>This should only be possible when we use the MAY_BACKLOG flag,
>as otherwise EINPROGRESS should never be used on the completion
>function unless it's a real error.
Urgh, right. I think I lost it.
>Which algorithm is generating EINPROGRESS in this case?
The call stack looks like the following:
crypto_authenc_givencrypt_done()
\crypto_authenc_ahash
\crypto_ahash_digest()
\mv_hash_digest()
\crypto_enqueue_request() <= -EINPROGRESS
crypto_authenc_givencrypt_done() err is EINPROGRESS
\aead_request_complete()
\xfrm_output_resume()
So I get in xfrm_output_one() with err == -EINPROGRESS. Now, that one
gets survided. The segfault happens later when xfrm_output_one() is
called with err = 0 for the same skb. The segfaults happens during
x = dst->xfrm;
is executed.
>Thanks,
>--
Sebastian
More information about the linux-arm-kernel
mailing list