crypto: ixp4xx - Fix false lastlen uninitialised warning
authorHerbert Xu <herbert@gondor.apana.org.au>
Tue, 19 Jan 2016 01:00:21 +0000 (09:00 +0800)
committerHerbert Xu <herbert@gondor.apana.org.au>
Mon, 25 Jan 2016 14:42:09 +0000 (22:42 +0800)
This patch fixes a false positive uninitialised variable warning
in aead_perform by moving the source processing in front of the
destination processing, thus ensuring that the initialisation of
lastlen is always visible to gcc.

Reported-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Acked-by: Arnd Bergmann <arnd@arndb.de>
drivers/crypto/ixp4xx_crypto.c

index e52496a172d05e70893f48ff3cfca309e93db343..2296934455fcd8d5ce75356365f4bc60cac320b1 100644 (file)
@@ -1031,6 +1031,18 @@ static int aead_perform(struct aead_request *req, int encrypt,
        BUG_ON(ivsize && !req->iv);
        memcpy(crypt->iv, req->iv, ivsize);
 
+       buf = chainup_buffers(dev, req->src, crypt->auth_len,
+                             &src_hook, flags, src_direction);
+       req_ctx->src = src_hook.next;
+       crypt->src_buf = src_hook.phys_next;
+       if (!buf)
+               goto free_buf_src;
+
+       lastlen = buf->buf_len;
+       if (lastlen >= authsize)
+               crypt->icv_rev_aes = buf->phys_addr +
+                                    buf->buf_len - authsize;
+
        req_ctx->dst = NULL;
 
        if (req->src != req->dst) {
@@ -1055,20 +1067,6 @@ static int aead_perform(struct aead_request *req, int encrypt,
                }
        }
 
-       buf = chainup_buffers(dev, req->src, crypt->auth_len,
-                             &src_hook, flags, src_direction);
-       req_ctx->src = src_hook.next;
-       crypt->src_buf = src_hook.phys_next;
-       if (!buf)
-               goto free_buf_src;
-
-       if (!encrypt || !req_ctx->dst) {
-               lastlen = buf->buf_len;
-               if (lastlen >= authsize)
-                       crypt->icv_rev_aes = buf->phys_addr +
-                                            buf->buf_len - authsize;
-       }
-
        if (unlikely(lastlen < authsize)) {
                /* The 12 hmac bytes are scattered,
                 * we need to copy them into a safe buffer */