crypto: vmx -- disable preemption to enable vsx in aes_ctr.c
PATCH 1/1 crypto: vmx -- disable preemption to enable vsx in aes_ctr.c
Some preemptible check warnings were reported from enable_kernel_vsx(). This patch disables preemption in aes_ctr.c before enabling vsx, and they are now consistent with other files in the same directory.
--- drivers/crypto/vmx/aes_ctr.c | 6 ++++++ 1 file changed, 6 insertions(+)
drivers/crypto/vmx/aes_ctr.c +6 -0
@@ -80,11 +80,13 @@ static int p8_aes_ctr_setkey(struct crypto_tfm *tfm, const u8 *key,int ret;struct p8_aes_ctr_ctx *ctx =crypto_tfm_ctx (tfm); +preempt_disable ();pagefault_disable ();enable_kernel_vsx (); ret =aes_p8_set_encrypt_key (key, keylen *8 , &ctx->enc_key);disable_kernel_vsx ();pagefault_enable (); +preempt_enable (); ret +=crypto_blkcipher_setkey (ctx->fallback, key, keylen);return ret;
@@ -99,11 +101,13 @@ static void p8_aes_ctr_final(struct p8_aes_ctr_ctx *ctx,u8 *dst = walk->dst.virt.addr;unsigned int nbytes = walk->nbytes; +preempt_disable ();pagefault_disable ();enable_kernel_vsx ();aes_p8_encrypt (ctrblk, keystream, &ctx->enc_key);disable_kernel_vsx ();pagefault_enable (); +preempt_enable ();crypto_xor (keystream, src, nbytes);memcpy (dst, keystream, nbytes);
@@ -132,6 +136,7 @@ static int p8_aes_ctr_crypt(struct blkcipher_desc *desc,blkcipher_walk_init (&walk, dst, src, nbytes); ret =blkcipher_walk_virt_block (desc, &walk,AES_BLOCK_SIZE );while ((nbytes = walk.nbytes) >=AES_BLOCK_SIZE ) { +preempt_disable ();pagefault_disable ();enable_kernel_vsx (); aes_p8_ctr32_encrypt_blocks(walk.src.virt.addr,
@@ -143,6 +148,7 @@ static int p8_aes_ctr_crypt(struct blkcipher_desc *desc, walk.iv);disable_kernel_vsx ();pagefault_enable (); +preempt_enable ();/* We need to update IV mostly for last bytes/round */ inc = (nbytes &AES_BLOCK_MASK ) /AES_BLOCK_SIZE ;
Herbert Xu
maintainerQuoted 5 lines · Li Zhong
Some preemptible check warnings were reported from
enable_kernel_vsx(). This patch disables preemption inaes_ctr.cbefore enabling vsx, and they are now consistent with other files in the same directory.Signed-off-by Li Zhong <[email protected]>
Patch applied. Thanks.
Signature · 3 lines
Email: Herbert Xu <[email protected]> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
Quoted 53 lines · On Fri, 20 Jan 2017 16:35:33 +0800 Li Zhong <[email protected]> wrote:
Some preemptible check warnings were reported from
enable_kernel_vsx(). This patch disables preemption inaes_ctr.cbefore enabling vsx, and they are now consistent with other files in the same directory.Signed-off-by Li Zhong <[email protected]>--- drivers/crypto/vmx/aes_ctr.c | 6 ++++++ 1 file changed, 6 insertions(+)(quoted diff) +0
-0
b/drivers/crypto/vmx/aes_ctr.cindex 38ed10d..7cf6d31 100644drivers/crypto/vmx/aes_ctr.c +5
-0@@ -80,11 +80,13 @@ static int p8_aes_ctr_setkey(struct crypto_tfm *tfm, const u8 *key, int ret;struct p8_aes_ctr_ctx *ctx =crypto_tfm_ctx (tfm); +preempt_disable ();pagefault_disable ();enable_kernel_vsx (); ret =aes_p8_set_encrypt_key (key, keylen *8 , &ctx->enc_key);disable_kernel_vsx ();pagefault_enable (); +preempt_enable (); ret +=crypto_blkcipher_setkey (ctx->fallback, key, keylen);return ret;@@ -99,11 +101,13 @@ static void p8_aes_ctr_final(struct p8_aes_ctr_ctx *ctx, u8 *dst = walk->dst.virt.addr;unsigned int nbytes = walk->nbytes; +preempt_disable ();pagefault_disable ();enable_kernel_vsx ();aes_p8_encrypt (ctrblk, keystream, &ctx->enc_key);disable_kernel_vsx ();pagefault_enable (); +preempt_enable ();crypto_xor (keystream, src, nbytes);memcpy (dst, keystream, nbytes);@@ -132,6 +136,7 @@ static int p8_aes_ctr_crypt(struct blkcipher_desc *desc,blkcipher_walk_init (&walk, dst, src, nbytes); ret =blkcipher_walk_virt_block (desc, &walk,AES_BLOCK_SIZE );while ((nbytes = walk.nbytes) >=AES_BLOCK_SIZE ) { +preempt_disable ();pagefault_disable ();enable_kernel_vsx (); aes_p8_ctr32_encrypt_blocks(walk.src.virt.addr,
drivers/crypto/vmx/aes_ctr.c static int p8_aes_ctr_crypt(struct blkcipher_desc · line 154
Quoted 7 lines
drivers/crypto/vmx/aes_ctr.c +1
-0@@ -143,6 +148,7 @@ static int p8_aes_ctr_crypt(struct blkcipher_desc *desc, walk.iv);disable_kernel_vsx ();pagefault_enable (); +preempt_enable ();/* We need to update IV mostly for last bytes/round */ inc = (nbytes &AES_BLOCK_MASK ) /AES_BLOCK_SIZE ;
Well observed, Thanks.