summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/arm64/crypto/aes-glue.c2
-rw-r--r--crypto/morus640.c3
-rw-r--r--crypto/sha3_generic.c2
-rw-r--r--drivers/char/hw_random/core.c11
-rw-r--r--drivers/crypto/chelsio/chtls/chtls_io.c5
5 files changed, 15 insertions, 8 deletions
diff --git a/arch/arm64/crypto/aes-glue.c b/arch/arm64/crypto/aes-glue.c
index 253188fb8cb0..e3e50950a863 100644
--- a/arch/arm64/crypto/aes-glue.c
+++ b/arch/arm64/crypto/aes-glue.c
@@ -223,8 +223,8 @@ static int ctr_encrypt(struct skcipher_request *req)
223 kernel_neon_begin(); 223 kernel_neon_begin();
224 aes_ctr_encrypt(walk.dst.virt.addr, walk.src.virt.addr, 224 aes_ctr_encrypt(walk.dst.virt.addr, walk.src.virt.addr,
225 (u8 *)ctx->key_enc, rounds, blocks, walk.iv); 225 (u8 *)ctx->key_enc, rounds, blocks, walk.iv);
226 err = skcipher_walk_done(&walk, walk.nbytes % AES_BLOCK_SIZE);
227 kernel_neon_end(); 226 kernel_neon_end();
227 err = skcipher_walk_done(&walk, walk.nbytes % AES_BLOCK_SIZE);
228 } 228 }
229 if (walk.nbytes) { 229 if (walk.nbytes) {
230 u8 __aligned(8) tail[AES_BLOCK_SIZE]; 230 u8 __aligned(8) tail[AES_BLOCK_SIZE];
diff --git a/crypto/morus640.c b/crypto/morus640.c
index 9fbcde307daf..5eede3749e64 100644
--- a/crypto/morus640.c
+++ b/crypto/morus640.c
@@ -274,8 +274,9 @@ static void crypto_morus640_decrypt_chunk(struct morus640_state *state, u8 *dst,
274 union morus640_block_in tail; 274 union morus640_block_in tail;
275 275
276 memcpy(tail.bytes, src, size); 276 memcpy(tail.bytes, src, size);
277 memset(tail.bytes + size, 0, MORUS640_BLOCK_SIZE - size);
277 278
278 crypto_morus640_load_a(&m, src); 279 crypto_morus640_load_a(&m, tail.bytes);
279 crypto_morus640_core(state, &m); 280 crypto_morus640_core(state, &m);
280 crypto_morus640_store_a(tail.bytes, &m); 281 crypto_morus640_store_a(tail.bytes, &m);
281 memset(tail.bytes + size, 0, MORUS640_BLOCK_SIZE - size); 282 memset(tail.bytes + size, 0, MORUS640_BLOCK_SIZE - size);
diff --git a/crypto/sha3_generic.c b/crypto/sha3_generic.c
index 264ec12c0b9c..7f6735d9003f 100644
--- a/crypto/sha3_generic.c
+++ b/crypto/sha3_generic.c
@@ -152,7 +152,7 @@ static SHA3_INLINE void keccakf_round(u64 st[25])
152 st[24] ^= bc[ 4]; 152 st[24] ^= bc[ 4];
153} 153}
154 154
155static void __optimize("O3") keccakf(u64 st[25]) 155static void keccakf(u64 st[25])
156{ 156{
157 int round; 157 int round;
158 158
diff --git a/drivers/char/hw_random/core.c b/drivers/char/hw_random/core.c
index 91bb98c42a1c..aaf9e5afaad4 100644
--- a/drivers/char/hw_random/core.c
+++ b/drivers/char/hw_random/core.c
@@ -516,11 +516,18 @@ EXPORT_SYMBOL_GPL(hwrng_register);
516 516
517void hwrng_unregister(struct hwrng *rng) 517void hwrng_unregister(struct hwrng *rng)
518{ 518{
519 int err;
520
519 mutex_lock(&rng_mutex); 521 mutex_lock(&rng_mutex);
520 522
521 list_del(&rng->list); 523 list_del(&rng->list);
522 if (current_rng == rng) 524 if (current_rng == rng) {
523 enable_best_rng(); 525 err = enable_best_rng();
526 if (err) {
527 drop_current_rng();
528 cur_rng_set_by_user = 0;
529 }
530 }
524 531
525 if (list_empty(&rng_list)) { 532 if (list_empty(&rng_list)) {
526 mutex_unlock(&rng_mutex); 533 mutex_unlock(&rng_mutex);
diff --git a/drivers/crypto/chelsio/chtls/chtls_io.c b/drivers/crypto/chelsio/chtls/chtls_io.c
index 00c7aab8e7d0..afebbd87c4aa 100644
--- a/drivers/crypto/chelsio/chtls/chtls_io.c
+++ b/drivers/crypto/chelsio/chtls/chtls_io.c
@@ -1548,15 +1548,14 @@ skip_copy:
1548 tp->urg_data = 0; 1548 tp->urg_data = 0;
1549 1549
1550 if ((avail + offset) >= skb->len) { 1550 if ((avail + offset) >= skb->len) {
1551 if (likely(skb))
1552 chtls_free_skb(sk, skb);
1553 buffers_freed++;
1554 if (ULP_SKB_CB(skb)->flags & ULPCB_FLAG_TLS_HDR) { 1551 if (ULP_SKB_CB(skb)->flags & ULPCB_FLAG_TLS_HDR) {
1555 tp->copied_seq += skb->len; 1552 tp->copied_seq += skb->len;
1556 hws->rcvpld = skb->hdr_len; 1553 hws->rcvpld = skb->hdr_len;
1557 } else { 1554 } else {
1558 tp->copied_seq += hws->rcvpld; 1555 tp->copied_seq += hws->rcvpld;
1559 } 1556 }
1557 chtls_free_skb(sk, skb);
1558 buffers_freed++;
1560 hws->copied_seq = 0; 1559 hws->copied_seq = 0;
1561 if (copied >= target && 1560 if (copied >= target &&
1562 !skb_peek(&sk->sk_receive_queue)) 1561 !skb_peek(&sk->sk_receive_queue))