From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f50.google.com (mail-wm1-f50.google.com [209.85.128.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EC4CA2FD69D for ; Sun, 26 Apr 2026 21:29:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.50 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777238998; cv=none; b=D4M5JVZaSX3+Hi1ywJsqdGAcNhS88WHg0NxM+w8omyRJj8cNh9Y5wusswuycUedkhK4DeiV6yqN7rmQdgrEsjQqZC/am8cnj3rFxhWIuKcJNQ2QJWkoLmrA9vI8cZlgwkOgSf2EM5xopxbL/CBQ4BjrYhNJu0iFfht+OyATyd/s= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777238998; c=relaxed/simple; bh=4kDmO+Sn24u2AqLLrq+64jAFcR1LrxQW8BDS8JdjPGA=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=FQa7oRdF2hs3+d9YvQfB3xRjQ8FPeqUfGJ2lXlSaBwA5qZXUBsEZkzME6y1Fk8bMrPmyHbVXSHBIJQW7x25fMKXA3FvC0Hf1ofEZJI9xL6CVc9mX/3pryzQ4LyCuvzzsq8kM2YdS+FfyOGEACT7w+57m7joNRDhvLeESgIie0pY= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=M33xGM0F; arc=none smtp.client-ip=209.85.128.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="M33xGM0F" Received: by mail-wm1-f50.google.com with SMTP id 5b1f17b1804b1-4891cd5927dso11319185e9.0 for ; Sun, 26 Apr 2026 14:29:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777238995; x=1777843795; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=sqonbb4yOoprB7ZvKc0Cn/U848NJVsSj7hGA97TbfZ0=; b=M33xGM0FqmPrXCDCeOUnEPAktif6s/NL/RChdVH9vRswOsLfO1kCJVA39DOcGJFQnW cU6WvywBUImB8+6iyamMUSGOvmzPTDY8kbrUjjC+Nd3Sfo6rZSLrto+/2lCxSbLgoPLj Ddo0KKPgU3dWnKXu95GSqXFZF94tfrtnf4ZBEEowZmP/DWRm956pVf3mGqPdt7mUVGDX 2R49oAMMO2sEWAzoHH2jqMR5auPXTS0RmVFWBA/CWz0+znm+9TnuvC21obpiJOTty72o aYr0bf7evWBU9FbBjWhPM8+TsnU9SmnfRiFYFswbauBVDNvdkxJ1DMe4d1SB4akKX1t2 4vEw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777238995; x=1777843795; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=sqonbb4yOoprB7ZvKc0Cn/U848NJVsSj7hGA97TbfZ0=; b=VJ57/iM9U3rMiNBy0ObOsuV6cOpp3cH2btSQyX6FHfux5SkMwYS30bYueC6e26s43U 0HjW8ZzjFjdEOvu8gFyz+9TsIQD+l4fuq8PvA3oSgI95fOjsFbaHgW7CCozkfjKU5rc3 uYUPgT5OWiigjP3Tpzjl5dG7mXqY6QSBpxTB9Q7gtbAVC4nhPz1EMkzZRxfIz18zSW+n KxCp/VD5CR/a/hEpdwn0lWRtw+kyLkH4rwRmnvQcv0LVvAhwPQ44OUkibYbgwoK71kRE A5Fjcv5o5JtzvMLqnbQtF4Iu9kBh0cywq1xUPoTiiDfTEKYFbLN5dU+w1b5JoEH+1Tnw +xoA== X-Forwarded-Encrypted: i=1; AFNElJ9CkcUPFzrj5SfkQ3lpQB97mHLXqZVZT15AEtwweU4VQjxKi57OcZexHsBVdl+qlEU+aqDx+ztfz4EOais=@vger.kernel.org X-Gm-Message-State: AOJu0YyLBw/6EvOIVcymGQuJ9XDcPlfT8bFWvnopIv5EhVuEH4UcnFRf m+y1QQ5xCvbgybzz8OBUtE6iui64zOGAd/M1PWigqm1bsSON2YW2qpEt X-Gm-Gg: AeBDiev+ocx8Vhx5V5OIxsnsj0Fgyuv4Pyv/LcXzIBoKw1yRrnFgtHQeo5R7T2f+af+ JRW9E4jrab00yupT1kUUIxbVE6PEYsCKkC8zZg5bHBCblskmla8LC5ims7hJBzHL59dfzBHIOk6 +NsedDlJSYcrWB3DD0hdlbJPTeD7E+Mx4KAmOduVyX81VRpAI0dY7JRWYJ4ttpumEBoa8c3/zpw OtO2bIYsGXQRvWA7xIt7+oPLIBLLNtHCvI9Djdqy2mzExyV3+YM01rRXM/Vpf6p0izKdjV88Ckd CV6HLg6Cux4ovezBirvQYpUEiaGzZWsuNhCpZL4sv8+35gIGwyegsZms71POVWnZPJvoZs2+Nh0 PWS44I8+YwTWZMgkuDPSv0wZkvSKtNKfQU+ExnGn8eABlFDYSvwOd6zjFGgFMEDl5rbZs6qFxRh J4fKCxG6uXnY3npRj/cfs6VJkS5xXXN8Ma0R7ZFPiBoe5zr6SMArC96CiKMD34fqLY2xz3ga6Nq A== X-Received: by 2002:a05:600c:154e:b0:487:17d:d0bf with SMTP id 5b1f17b1804b1-488fb769fb4mr257421595e9.6.1777238995346; Sun, 26 Apr 2026 14:29:55 -0700 (PDT) Received: from menon.v.cablecom.net (84-74-0-139.dclient.hispeed.ch. [84.74.0.139]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43fe4e3a79esm79047320f8f.17.2026.04.26.14.29.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 14:29:55 -0700 (PDT) From: Lothar Rubusch To: herbert@gondor.apana.org.au, thorsten.blum@linux.dev, davem@davemloft.net, nicolas.ferre@microchip.com, alexandre.belloni@bootlin.com, claudiu.beznea@tuxon.dev, ardb@kernel.org, linusw@kernel.org Cc: linux-crypto@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, l.rubusch@gmail.com Subject: [PATCH v5 1/1] crypto: atmel-sha204a - fix blocking and non-blocking rng logic Date: Sun, 26 Apr 2026 21:29:47 +0000 Message-Id: <20260426212947.24757-2-l.rubusch@gmail.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260426212947.24757-1-l.rubusch@gmail.com> References: <20260426212947.24757-1-l.rubusch@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit The blocking and non-blocking paths were failing to provide valid entropy due to improper buffer management. Reading the buffer starting from byte 1, only fetch the 32 bytes of random data from the return message. Tested on an Atmel SHA204A device. Before (here for blocking), tests showed repeatedly reading reduced bytes. $ head -c 32 /dev/hwrng | hexdump -C 00000000 02 28 85 b3 47 40 f2 ee 00 00 00 00 00 00 00 00 |.(..G@..........| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 After, the result will be similar to the following: $ head -c 32 /dev/hwrng | hexdump -C 00000000 5a fc 3f 13 14 68 fe 06 68 0a bd 04 83 6e 09 69 |Z.?..h..h....n.i| 00000010 75 ff cf 87 10 84 3b c9 c1 df ae eb 45 53 4c c3 |u.....;.....ESL.| 00000020 Fixes: da001fb651b0 ("crypto: atmel-i2c - add support for SHA204A random number generator") Suggested-by: Ard Biesheuvel Signed-off-by: Lothar Rubusch --- drivers/crypto/atmel-sha204a.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/crypto/atmel-sha204a.c b/drivers/crypto/atmel-sha204a.c index dbb39ed0cea1..5699bb532325 100644 --- a/drivers/crypto/atmel-sha204a.c +++ b/drivers/crypto/atmel-sha204a.c @@ -48,8 +48,8 @@ static int atmel_sha204a_rng_read_nonblocking(struct hwrng *rng, void *data, if (rng->priv) { work_data = (struct atmel_i2c_work_data *)rng->priv; - max = min(sizeof(work_data->cmd.data), max); - memcpy(data, &work_data->cmd.data, max); + max = min(RANDOM_RSP_SIZE - CMD_OVERHEAD_SIZE, max); + memcpy(data, &work_data->cmd.data[RSP_DATA_IDX], max); rng->priv = 0; } else { work_data = kmalloc_obj(*work_data, GFP_ATOMIC); @@ -87,8 +87,8 @@ static int atmel_sha204a_rng_read(struct hwrng *rng, void *data, size_t max, if (ret) return ret; - max = min(sizeof(cmd.data), max); - memcpy(data, cmd.data, max); + max = min(RANDOM_RSP_SIZE - CMD_OVERHEAD_SIZE, max); + memcpy(data, &cmd.data[RSP_DATA_IDX], max); return max; } -- 2.53.0