From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.41]) (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 8F73023D2A4 for ; Sun, 26 Apr 2026 15:49:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.41 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777218590; cv=none; b=XIhm5S8ev8hHh+5sCZQCzktCDaQUnk0KVfvu8F6/VAi5cgan60ej98g6/ynEkWFSHjW8c88gOgrtu5IqFvwPvVwtZX7laAPQQjsp+EB8UADk3fAbbuvA6NWtJmxOzf0nkrMga87Qjq995hpzg5HdhmVoZDz+MmDUGZn/GXV6EwI= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777218590; c=relaxed/simple; bh=BoRrP1z3WfziTkwQFPAeiHKgRh28FkywnO+QJJlWrSM=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=SXv6Eiw6yVFFCXNGS+dWCu3RhXwpBVBBvqKGmWpiBxMs/J4QsAvJj0XLcYhoqjWLGmWIfrZP5iOsI8VuTlRlGcZUYXkivbFbGlJhqSnj40Z9+/eJXPnGwOAvlP3DomSr74V9oIG7ipQPoBnA/Eg3JVBtZDAI2SIJqMNlDP6qWcY= 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=Z8sDYIrk; arc=none smtp.client-ip=209.85.128.41 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="Z8sDYIrk" Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-4836d9d54f6so14531035e9.1 for ; Sun, 26 Apr 2026 08:49:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777218587; x=1777823387; 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=68cWQlXwjgEl1dmYGzLjO4qteIR6dZpj4xoC1U4PHsU=; b=Z8sDYIrkxJcqvZvBPofoi5v0y/NvwWMno0zwO5YpCfLoqd/iQ3ydWdixVp5eR09s0J coOu+U0TFdg99ZW4KL1vubSWrsj8DoGuG1bcV4acoR+etsZYt/AzELLHYc6/EvAi3/27 2V42llI7DwT+aoxG36GWv0W9Y3JjnB4d34Jx7PVp9sw3cmTzBz+1GUUxOAkBCTyHbtc9 WNUlMHKHI5ZeyoOZwFgfPdMPnjuE5ZTWu9aZIL9lSUkisjVKLiDdFKAMIJLtYXUF61Wc 8jw5AcrjJ7nWzmGZlSy+/X38a6nJHwcTkOd+ZHHBkFRBgqtMImeZTia3ruMEuGLitZxX hX7w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777218587; x=1777823387; 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=68cWQlXwjgEl1dmYGzLjO4qteIR6dZpj4xoC1U4PHsU=; b=Kj1C/ACggG9LWfqdO4VutCgWo65sTGSPRafz4S0O1nDHStha3hKm5/7PJSZ7arst74 FkBRkz+Eq1cySGobqy0PEhTRu61huXqwvYRY+tI2ohY/LTVd80MirFDTwxM33/eALcgD bX/6lPrh3R8ffDLLydQCZI1sYUhLHsWGBRVM/03tPXEPvO1jQkNIBTthQU6bjMmnZiXp jn67904zkAp5BuEex9DTzlXfPcV3SrYdmMfcql4Y31pmBC1ty8z72akQMUxBdVdakC0t AOAT9wl5SmcgwGzqaxGLEROaIsoC1cz2mCB27EGMIVvNDxqLgLS2WXQFxKUFi0IMDW8O Hdsw== X-Forwarded-Encrypted: i=1; AFNElJ+a/mlBeI+piKoW0AQkb7KHiS8IXPIqbzB110r0O5xhB802RikWDVFSxTSHeel3RJdVp3HnMMI6CxQX9Es=@vger.kernel.org X-Gm-Message-State: AOJu0Yzax7/2qXsLjhV2C6jG6abg836Ao41nmSUvXZJrEqO0eJUZu8WV 6/QfZwLwnADwRuwAG2OOZgfAuMIENnADg26BxZHAK47Wk2NTLBYXIfH7 X-Gm-Gg: AeBDievURxiaXGc/urrcMiTkDathx0u03fNrcju7UZKP8tQfVWyjA2lIIgZR6HGqO1e IuTwOQ57YSCpSi7b4XLE/L9SGgEV1RsWwz1vbG81d/wWeXlWD1wh7nREcGOeNlBqdH/+39O17T7 z4jEdO1pHd7CQD43ar/BBmh7lIzdbNQ98hQ3CGbfch4SEOJRxRkBFgI91/1so+NVtIae0UrfCGU z8/qA5s1fsPczGOHVccI6BPnBOlGds78Kvn/DgwylShvskeS3po5+tm3SnAmD5yZhsAwoMN8yml lEm0994R45D4URYBKTU9heUu+ZNN6f/MaIVz5HON8ZEEL/pzIOddXeBnVUbi8PTDJ91kzykSj4d lo1Idsn/sGf60GwAr60f7SF8IqATJdI3ODCBuUIzS2keXIbITPsuefgAPPrhmKGAgdkDISii4cg Oyqgx4zw/OmMDwY/1WxWVv5gQolfygv16ky++OAJLr8b6p2vMKv4d1+FPpmenPEBL5A8PtCtbf2 WfgqQRCrPPF X-Received: by 2002:a05:6000:1361:b0:43d:627c:21ca with SMTP id ffacd0b85a97d-43fe3df01c5mr21025546f8f.3.1777218586806; Sun, 26 Apr 2026 08:49:46 -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-43fe4e3a341sm79799339f8f.24.2026.04.26.08.49.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 08:49:46 -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 v4 1/1] crypto: atmel-sha204a - fix non-blocking read logic Date: Sun, 26 Apr 2026 15:49:40 +0000 Message-Id: <20260426154940.24375-2-l.rubusch@gmail.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260426154940.24375-1-l.rubusch@gmail.com> References: <20260426154940.24375-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. Read the buffer starting from bit 1, only fetch the 32 bytes of random data of the return message. Tested on a Atmel SHA204a device. Before (here for blocking) tests showed repeadetly reading reduced bytes of entropy: $ 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..39a229086a84 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[1], 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[1], max); return max; } -- 2.39.5