浏览代码

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 - Add EINPROGRESS check
Linus Torvalds 15 年之前
父节点
当前提交
a231a1f271
共有 1 个文件被更改,包括 11 次插入5 次删除
  1. 11 5
      crypto/authenc.c

+ 11 - 5
crypto/authenc.c

@@ -46,6 +46,12 @@ struct authenc_request_ctx {
 	char tail[];
 	char tail[];
 };
 };
 
 
+static void authenc_request_complete(struct aead_request *req, int err)
+{
+	if (err != -EINPROGRESS)
+		aead_request_complete(req, err);
+}
+
 static int crypto_authenc_setkey(struct crypto_aead *authenc, const u8 *key,
 static int crypto_authenc_setkey(struct crypto_aead *authenc, const u8 *key,
 				 unsigned int keylen)
 				 unsigned int keylen)
 {
 {
@@ -142,7 +148,7 @@ static void authenc_geniv_ahash_update_done(struct crypto_async_request *areq,
 				 crypto_aead_authsize(authenc), 1);
 				 crypto_aead_authsize(authenc), 1);
 
 
 out:
 out:
-	aead_request_complete(req, err);
+	authenc_request_complete(req, err);
 }
 }
 
 
 static void authenc_geniv_ahash_done(struct crypto_async_request *areq, int err)
 static void authenc_geniv_ahash_done(struct crypto_async_request *areq, int err)
@@ -208,7 +214,7 @@ static void authenc_verify_ahash_update_done(struct crypto_async_request *areq,
 	err = crypto_ablkcipher_decrypt(abreq);
 	err = crypto_ablkcipher_decrypt(abreq);
 
 
 out:
 out:
-	aead_request_complete(req, err);
+	authenc_request_complete(req, err);
 }
 }
 
 
 static void authenc_verify_ahash_done(struct crypto_async_request *areq,
 static void authenc_verify_ahash_done(struct crypto_async_request *areq,
@@ -245,7 +251,7 @@ static void authenc_verify_ahash_done(struct crypto_async_request *areq,
 	err = crypto_ablkcipher_decrypt(abreq);
 	err = crypto_ablkcipher_decrypt(abreq);
 
 
 out:
 out:
-	aead_request_complete(req, err);
+	authenc_request_complete(req, err);
 }
 }
 
 
 static u8 *crypto_authenc_ahash_fb(struct aead_request *req, unsigned int flags)
 static u8 *crypto_authenc_ahash_fb(struct aead_request *req, unsigned int flags)
@@ -379,7 +385,7 @@ static void crypto_authenc_encrypt_done(struct crypto_async_request *req,
 		err = crypto_authenc_genicv(areq, iv, 0);
 		err = crypto_authenc_genicv(areq, iv, 0);
 	}
 	}
 
 
-	aead_request_complete(areq, err);
+	authenc_request_complete(areq, err);
 }
 }
 
 
 static int crypto_authenc_encrypt(struct aead_request *req)
 static int crypto_authenc_encrypt(struct aead_request *req)
@@ -420,7 +426,7 @@ static void crypto_authenc_givencrypt_done(struct crypto_async_request *req,
 		err = crypto_authenc_genicv(areq, greq->giv, 0);
 		err = crypto_authenc_genicv(areq, greq->giv, 0);
 	}
 	}
 
 
-	aead_request_complete(areq, err);
+	authenc_request_complete(areq, err);
 }
 }
 
 
 static int crypto_authenc_givencrypt(struct aead_givcrypt_request *req)
 static int crypto_authenc_givencrypt(struct aead_givcrypt_request *req)