diff options
Diffstat (limited to 'crypto')
| -rw-r--r-- | crypto/Kconfig | 4 | ||||
| -rw-r--r-- | crypto/algapi.c | 1 | ||||
| -rw-r--r-- | crypto/algboss.c | 1 | ||||
| -rw-r--r-- | crypto/async_tx/async_pq.c | 1 | ||||
| -rw-r--r-- | crypto/async_tx/async_raid6_recov.c | 21 | ||||
| -rw-r--r-- | crypto/async_tx/raid6test.c | 1 | ||||
| -rw-r--r-- | crypto/authenc.c | 16 | ||||
| -rw-r--r-- | crypto/hmac.c | 1 | ||||
| -rw-r--r-- | crypto/rng.c | 1 | ||||
| -rw-r--r-- | crypto/seqiv.c | 1 | ||||
| -rw-r--r-- | crypto/tcrypt.c | 2 | ||||
| -rw-r--r-- | crypto/xor.c | 1 | 
12 files changed, 34 insertions, 17 deletions
diff --git a/crypto/Kconfig b/crypto/Kconfig index 6a2e295ee22..403857ad06d 100644 --- a/crypto/Kconfig +++ b/crypto/Kconfig @@ -826,8 +826,8 @@ config CRYPTO_ANSI_CPRNG  	help  	  This option enables the generic pseudo random number generator  	  for cryptographic modules.  Uses the Algorithm specified in -	  ANSI X9.31 A.2.4. Not this option must be enabled if CRYPTO_FIPS  -	  is selected +	  ANSI X9.31 A.2.4. Note that this option must be enabled if +	  CRYPTO_FIPS is selected  source "drivers/crypto/Kconfig" diff --git a/crypto/algapi.c b/crypto/algapi.c index 3e4524e6139..76fae27ed01 100644 --- a/crypto/algapi.c +++ b/crypto/algapi.c @@ -17,6 +17,7 @@  #include <linux/list.h>  #include <linux/module.h>  #include <linux/rtnetlink.h> +#include <linux/slab.h>  #include <linux/string.h>  #include "internal.h" diff --git a/crypto/algboss.c b/crypto/algboss.c index 412241ce4cf..c3c196b5823 100644 --- a/crypto/algboss.c +++ b/crypto/algboss.c @@ -19,6 +19,7 @@  #include <linux/notifier.h>  #include <linux/rtnetlink.h>  #include <linux/sched.h> +#include <linux/slab.h>  #include <linux/string.h>  #include "internal.h" diff --git a/crypto/async_tx/async_pq.c b/crypto/async_tx/async_pq.c index ec87f53d505..fdd8257d35d 100644 --- a/crypto/async_tx/async_pq.c +++ b/crypto/async_tx/async_pq.c @@ -24,6 +24,7 @@  #include <linux/dma-mapping.h>  #include <linux/raid/pq.h>  #include <linux/async_tx.h> +#include <linux/gfp.h>  /**   * pq_scribble_page - space to hold throwaway P or Q buffer for diff --git a/crypto/async_tx/async_raid6_recov.c b/crypto/async_tx/async_raid6_recov.c index 943f2abac9b..ce038d861eb 100644 --- a/crypto/async_tx/async_raid6_recov.c +++ b/crypto/async_tx/async_raid6_recov.c @@ -324,6 +324,7 @@ struct dma_async_tx_descriptor *  async_raid6_2data_recov(int disks, size_t bytes, int faila, int failb,  			struct page **blocks, struct async_submit_ctl *submit)  { +	void *scribble = submit->scribble;  	int non_zero_srcs, i;  	BUG_ON(faila == failb); @@ -332,11 +333,13 @@ async_raid6_2data_recov(int disks, size_t bytes, int faila, int failb,  	pr_debug("%s: disks: %d len: %zu\n", __func__, disks, bytes); -	/* we need to preserve the contents of 'blocks' for the async -	 * case, so punt to synchronous if a scribble buffer is not available +	/* if a dma resource is not available or a scribble buffer is not +	 * available punt to the synchronous path.  In the 'dma not +	 * available' case be sure to use the scribble buffer to +	 * preserve the content of 'blocks' as the caller intended.  	 */ -	if (!submit->scribble) { -		void **ptrs = (void **) blocks; +	if (!async_dma_find_channel(DMA_PQ) || !scribble) { +		void **ptrs = scribble ? scribble : (void **) blocks;  		async_tx_quiesce(&submit->depend_tx);  		for (i = 0; i < disks; i++) @@ -406,11 +409,13 @@ async_raid6_datap_recov(int disks, size_t bytes, int faila,  	pr_debug("%s: disks: %d len: %zu\n", __func__, disks, bytes); -	/* we need to preserve the contents of 'blocks' for the async -	 * case, so punt to synchronous if a scribble buffer is not available +	/* if a dma resource is not available or a scribble buffer is not +	 * available punt to the synchronous path.  In the 'dma not +	 * available' case be sure to use the scribble buffer to +	 * preserve the content of 'blocks' as the caller intended.  	 */ -	if (!scribble) { -		void **ptrs = (void **) blocks; +	if (!async_dma_find_channel(DMA_PQ) || !scribble) { +		void **ptrs = scribble ? scribble : (void **) blocks;  		async_tx_quiesce(&submit->depend_tx);  		for (i = 0; i < disks; i++) diff --git a/crypto/async_tx/raid6test.c b/crypto/async_tx/raid6test.c index f84f6b4301d..c1321935ebc 100644 --- a/crypto/async_tx/raid6test.c +++ b/crypto/async_tx/raid6test.c @@ -20,6 +20,7 @@   *   */  #include <linux/async_tx.h> +#include <linux/gfp.h>  #include <linux/random.h>  #undef pr diff --git a/crypto/authenc.c b/crypto/authenc.c index 2bb7348d8d5..05eb32e0d94 100644 --- a/crypto/authenc.c +++ b/crypto/authenc.c @@ -46,6 +46,12 @@ struct authenc_request_ctx {  	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,  				 unsigned int keylen)  { @@ -142,7 +148,7 @@ static void authenc_geniv_ahash_update_done(struct crypto_async_request *areq,  				 crypto_aead_authsize(authenc), 1);  out: -	aead_request_complete(req, err); +	authenc_request_complete(req, 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);  out: -	aead_request_complete(req, err); +	authenc_request_complete(req, err);  }  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);  out: -	aead_request_complete(req, err); +	authenc_request_complete(req, err);  }  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);  	} -	aead_request_complete(areq, err); +	authenc_request_complete(areq, err);  }  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);  	} -	aead_request_complete(areq, err); +	authenc_request_complete(areq, err);  }  static int crypto_authenc_givencrypt(struct aead_givcrypt_request *req) diff --git a/crypto/hmac.c b/crypto/hmac.c index 15c2eb53454..8d9544cf816 100644 --- a/crypto/hmac.c +++ b/crypto/hmac.c @@ -23,7 +23,6 @@  #include <linux/kernel.h>  #include <linux/module.h>  #include <linux/scatterlist.h> -#include <linux/slab.h>  #include <linux/string.h>  struct hmac_ctx { diff --git a/crypto/rng.c b/crypto/rng.c index ba05e7380e7..f93cb531118 100644 --- a/crypto/rng.c +++ b/crypto/rng.c @@ -19,6 +19,7 @@  #include <linux/mutex.h>  #include <linux/random.h>  #include <linux/seq_file.h> +#include <linux/slab.h>  #include <linux/string.h>  static DEFINE_MUTEX(crypto_default_rng_lock); diff --git a/crypto/seqiv.c b/crypto/seqiv.c index 5a013a8bf87..4c449122941 100644 --- a/crypto/seqiv.c +++ b/crypto/seqiv.c @@ -20,6 +20,7 @@  #include <linux/init.h>  #include <linux/kernel.h>  #include <linux/module.h> +#include <linux/slab.h>  #include <linux/spinlock.h>  #include <linux/string.h> diff --git a/crypto/tcrypt.c b/crypto/tcrypt.c index aa3f84ccc78..a35159947a2 100644 --- a/crypto/tcrypt.c +++ b/crypto/tcrypt.c @@ -18,8 +18,8 @@  #include <crypto/hash.h>  #include <linux/err.h>  #include <linux/init.h> +#include <linux/gfp.h>  #include <linux/module.h> -#include <linux/slab.h>  #include <linux/scatterlist.h>  #include <linux/string.h>  #include <linux/moduleparam.h> diff --git a/crypto/xor.c b/crypto/xor.c index fc5b836f343..b75182d8ab1 100644 --- a/crypto/xor.c +++ b/crypto/xor.c @@ -18,6 +18,7 @@  #define BH_TRACE 0  #include <linux/module.h> +#include <linux/gfp.h>  #include <linux/raid/xor.h>  #include <linux/jiffies.h>  #include <asm/xor.h>  |