Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0f987e25 authored by Herbert Xu's avatar Herbert Xu
Browse files

crypto: ixp4xx - Fix false lastlen uninitialised warning



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: default avatarArnd Bergmann <arnd@arndb.de>
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
Acked-by: default avatarArnd Bergmann <arnd@arndb.de>
parent 9dbcc215
Loading
Loading
Loading
Loading
+12 −14
Original line number Diff line number Diff line
@@ -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 */