[PATCH] hwrng: cctrng - fix destination offset in cctrng_read()

From: Thorsten Blum

Date: Thu Oct 15 2026 - 06:40:05 EST


cctrng_read() copies random data in two steps when a read wraps around
the end of the circular buffer.

Use the correct destination offset for the second copy instead of
overwriting the start of the destination buffer.

Fixes: a583ed310bb6 ("hwrng: cctrng - introduce Arm CryptoCell driver")
Cc: stable@xxxxxxxxxxxxxxx
Signed-off-by: Thorsten Blum <blum@xxxxxxxxxx>
---
drivers/char/hw_random/cctrng.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/char/hw_random/cctrng.c b/drivers/char/hw_random/cctrng.c
index a6925211c3b5..e070581237e5 100644
--- a/drivers/char/hw_random/cctrng.c
+++ b/drivers/char/hw_random/cctrng.c
@@ -237,7 +237,7 @@ static int cctrng_read(struct hwrng *rng, void *data, size_t max, bool wait)
cnt_w = CIRC_CNT(drvdata->circ.head,
drvdata->circ.tail, CCTRNG_DATA_BUF_WORDS);
size = min((cnt_w<<2), left);
- memcpy(data, &(buf[drvdata->circ.tail]), size);
+ memcpy(data + copied, &buf[drvdata->circ.tail], size);
copied += size;
circ_idx_inc(&drvdata->circ.tail, size);
}