diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-08-22 11:38:00 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-08-22 11:38:00 -0400 |
commit | d3ee1b405872214609868f3cde631ac157026dd0 (patch) | |
tree | f006d4b8d9c12d484e8c0dd178640b971a9f9eeb | |
parent | 115399cab1a4a1f54580c4a8c6a24c6cede569b3 (diff) | |
parent | a697690bece75d4ba424c1318eb25c37d41d5829 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6:
crypto: authenc - Avoid using clobbered request pointer
-rw-r--r-- | crypto/authenc.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/crypto/authenc.c b/crypto/authenc.c index 4b226768752a..fd9f06c63d76 100644 --- a/crypto/authenc.c +++ b/crypto/authenc.c | |||
@@ -174,8 +174,9 @@ static int crypto_authenc_genicv(struct aead_request *req, u8 *iv, | |||
174 | static void crypto_authenc_encrypt_done(struct crypto_async_request *req, | 174 | static void crypto_authenc_encrypt_done(struct crypto_async_request *req, |
175 | int err) | 175 | int err) |
176 | { | 176 | { |
177 | struct aead_request *areq = req->data; | ||
178 | |||
177 | if (!err) { | 179 | if (!err) { |
178 | struct aead_request *areq = req->data; | ||
179 | struct crypto_aead *authenc = crypto_aead_reqtfm(areq); | 180 | struct crypto_aead *authenc = crypto_aead_reqtfm(areq); |
180 | struct crypto_authenc_ctx *ctx = crypto_aead_ctx(authenc); | 181 | struct crypto_authenc_ctx *ctx = crypto_aead_ctx(authenc); |
181 | struct ablkcipher_request *abreq = aead_request_ctx(areq); | 182 | struct ablkcipher_request *abreq = aead_request_ctx(areq); |
@@ -185,7 +186,7 @@ static void crypto_authenc_encrypt_done(struct crypto_async_request *req, | |||
185 | err = crypto_authenc_genicv(areq, iv, 0); | 186 | err = crypto_authenc_genicv(areq, iv, 0); |
186 | } | 187 | } |
187 | 188 | ||
188 | aead_request_complete(req->data, err); | 189 | aead_request_complete(areq, err); |
189 | } | 190 | } |
190 | 191 | ||
191 | static int crypto_authenc_encrypt(struct aead_request *req) | 192 | static int crypto_authenc_encrypt(struct aead_request *req) |
@@ -216,14 +217,15 @@ static int crypto_authenc_encrypt(struct aead_request *req) | |||
216 | static void crypto_authenc_givencrypt_done(struct crypto_async_request *req, | 217 | static void crypto_authenc_givencrypt_done(struct crypto_async_request *req, |
217 | int err) | 218 | int err) |
218 | { | 219 | { |
220 | struct aead_request *areq = req->data; | ||
221 | |||
219 | if (!err) { | 222 | if (!err) { |
220 | struct aead_request *areq = req->data; | ||
221 | struct skcipher_givcrypt_request *greq = aead_request_ctx(areq); | 223 | struct skcipher_givcrypt_request *greq = aead_request_ctx(areq); |
222 | 224 | ||
223 | err = crypto_authenc_genicv(areq, greq->giv, 0); | 225 | err = crypto_authenc_genicv(areq, greq->giv, 0); |
224 | } | 226 | } |
225 | 227 | ||
226 | aead_request_complete(req->data, err); | 228 | aead_request_complete(areq, err); |
227 | } | 229 | } |
228 | 230 | ||
229 | static int crypto_authenc_givencrypt(struct aead_givcrypt_request *req) | 231 | static int crypto_authenc_givencrypt(struct aead_givcrypt_request *req) |