Commit f3b140ad authored by Ayush Sawal's avatar Ayush Sawal Committed by David S. Miller

Crypto/chcr: Fixes compilations warnings

This patch fixes the compilation warnings displayed by sparse tool for
chcr driver.

V1->V2

Avoid type casting by using get_unaligned_be32() and
put_unaligned_be16/32() functions.

The key which comes from stack is an u8 byte stream so we store it in
an unsigned char array(ablkctx->key). The function get_aes_decrypt_key()
is a used to calculate  the reverse round key for decryption, for this
operation the key has to be divided into 4 bytes, so to extract 4 bytes
from an u8 byte stream and store it in an u32 variable, get_aligned_be32()
is used. Similarly for copying back the key from u32 variable to the
original u8 key stream, put_aligned_be32() is used.
Signed-off-by: default avatarAyush Sawal <ayush.sawal@chelsio.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 76d7728d
...@@ -256,7 +256,7 @@ static void get_aes_decrypt_key(unsigned char *dec_key, ...@@ -256,7 +256,7 @@ static void get_aes_decrypt_key(unsigned char *dec_key,
return; return;
} }
for (i = 0; i < nk; i++) for (i = 0; i < nk; i++)
w_ring[i] = be32_to_cpu(*(u32 *)&key[4 * i]); w_ring[i] = get_unaligned_be32(&key[i * 4]);
i = 0; i = 0;
temp = w_ring[nk - 1]; temp = w_ring[nk - 1];
...@@ -275,7 +275,7 @@ static void get_aes_decrypt_key(unsigned char *dec_key, ...@@ -275,7 +275,7 @@ static void get_aes_decrypt_key(unsigned char *dec_key,
} }
i--; i--;
for (k = 0, j = i % nk; k < nk; k++) { for (k = 0, j = i % nk; k < nk; k++) {
*((u32 *)dec_key + k) = htonl(w_ring[j]); put_unaligned_be32(w_ring[j], &dec_key[k * 4]);
j--; j--;
if (j < 0) if (j < 0)
j += nk; j += nk;
...@@ -2926,8 +2926,7 @@ static int ccm_format_packet(struct aead_request *req, ...@@ -2926,8 +2926,7 @@ static int ccm_format_packet(struct aead_request *req,
memcpy(ivptr, req->iv, 16); memcpy(ivptr, req->iv, 16);
} }
if (assoclen) if (assoclen)
*((unsigned short *)(reqctx->scratch_pad + 16)) = put_unaligned_be16(assoclen, &reqctx->scratch_pad[16]);
htons(assoclen);
rc = generate_b0(req, ivptr, op_type); rc = generate_b0(req, ivptr, op_type);
/* zero the ctr value */ /* zero the ctr value */
...@@ -3201,8 +3200,7 @@ static struct sk_buff *create_gcm_wr(struct aead_request *req, ...@@ -3201,8 +3200,7 @@ static struct sk_buff *create_gcm_wr(struct aead_request *req,
} else { } else {
memcpy(ivptr, req->iv, GCM_AES_IV_SIZE); memcpy(ivptr, req->iv, GCM_AES_IV_SIZE);
} }
*((unsigned int *)(ivptr + 12)) = htonl(0x01); put_unaligned_be32(0x01, &ivptr[12]);
ulptx = (struct ulptx_sgl *)(ivptr + 16); ulptx = (struct ulptx_sgl *)(ivptr + 16);
chcr_add_aead_dst_ent(req, phys_cpl, qid); chcr_add_aead_dst_ent(req, phys_cpl, qid);
......
...@@ -403,7 +403,7 @@ inline void *copy_esn_pktxt(struct sk_buff *skb, ...@@ -403,7 +403,7 @@ inline void *copy_esn_pktxt(struct sk_buff *skb,
xo = xfrm_offload(skb); xo = xfrm_offload(skb);
aadiv->spi = (esphdr->spi); aadiv->spi = (esphdr->spi);
seqlo = htonl(esphdr->seq_no); seqlo = ntohl(esphdr->seq_no);
seqno = cpu_to_be64(seqlo + ((u64)xo->seq.hi << 32)); seqno = cpu_to_be64(seqlo + ((u64)xo->seq.hi << 32));
memcpy(aadiv->seq_no, &seqno, 8); memcpy(aadiv->seq_no, &seqno, 8);
iv = skb_transport_header(skb) + sizeof(struct ip_esp_hdr); iv = skb_transport_header(skb) + sizeof(struct ip_esp_hdr);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment