aboutsummaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorHuang Ying2009-11-16 21:52:22 +0800
committerHerbert Xu2009-11-16 21:52:22 +0800
commit62c5593aea4b71d61dc0f37fea96c556c158a042 (patch)
tree3a168a212ccafa696739c21a97f7ae81096c610e /drivers
parente8edb3cbd7dd8acf6c748a02d06ec1d82c4124ea (diff)
crypto: gcm - fix another complete call in complete fuction
The flow of the complete function (xxx_done) in gcm.c is as follow: void complete(struct crypto_async_request *areq, int err) { struct aead_request *req = areq->data; if (!err) { err = async_next_step(); if (err == -EINPROGRESS || err == -EBUSY) return; } complete_for_next_step(areq, err); } But *areq may be destroyed in async_next_step(), this makes complete_for_next_step() can not work properly. To fix this, one of following methods is used for each complete function. - Add a __complete() for each complete(), which accept struct aead_request *req instead of areq, so avoid using areq after it is destroyed. - Expand complete_for_next_step(). The fixing method is based on the idea of Herbert Xu. Signed-off-by: Huang Ying <ying.huang@intel.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'drivers')
0 files changed, 0 insertions, 0 deletions