Re: Crypto oops in async_chainiv_do_postponed
From: Herbert Xu <herbert@gondor.apana.org.au>
Date: 2009-09-01 22:17:21
Also in:
linux-crypto
On Tue, Sep 01, 2009 at 10:42:44AM -0500, Brad Bosch wrote:
Now, ctx-err may be used by both async_chainiv_postpone_request to store the return value from skcipher_enqueue_givcrypt and by async_chainiv_givencrypt_tail to store the return value from crypto_ablkcipher_encrypt at the same time. This can cause the calling function to think async_chainiv_givencrypt has completed it's work, when in fact, the work was defered.
async_chainiv_postpone_request never touches ctx->err unless it can obtain the INUSE bit lock. On the other hand, the normal patch async_chainiv_givencrypt_tail never relinquishes the INUSE bit until it is finisehd with ctx->err.
OK. I see now that your offset patch should indeed solve that problem. But why did you choose to fix it in a complex way? My suggestion just adds a single test while yours adds new parameters, a new function and an extra function call.
Because that introduces two NULL checks where the second one is useless. Not a big deal but then again, my patch wasn't that complicated either :) Please let me know whether it actually fixes your problem though so I can get this upstream. Thanks, -- Visit Openswan at http://www.openswan.org/ Email: Herbert Xu ~{PmV>HI~} [off-list ref] Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt