From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from out-172.mta1.migadu.com (out-172.mta1.migadu.com [95.215.58.172]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 125C22D5C76 for ; Sun, 15 Feb 2026 12:42:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=95.215.58.172 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771159355; cv=none; b=S0j0SuEIQYnqKjLGalj/KKifBvk/bkksMe8hCKbvtaf2jLad6FicqDB5nAodIpRl8u9wlvwFy/tgVrS3WnXrwJ377O0jaSSzvboTh7lr4Z3T46WuTvsHCk/4CHUihMj/SyTrSSC3QCTb44QJsXZhNhF5VVVv9PuBNuagVPAt8lY= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771159355; c=relaxed/simple; bh=5+P4obm2qvRoLyi5dg9blApuyDkgjQ2CAHmPVE8AfNM=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=PAvyg036gqpQQFD7I7NijU4PSSDrWjjzNElpTdy0eWPPY/C0EjQZwrtwxWC7ahIRyJDlYE8QZ+fOC0KB+l0JLm7b/khUQFdm6GVUtYfZMOJowlcaOMw/3uTECTXpb2K3dRkHR5F+nzeKLfilQE78brnmngei7xPRO54MhJLnByM= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev; spf=pass smtp.mailfrom=linux.dev; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b=wPRLSg96; arc=none smtp.client-ip=95.215.58.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b="wPRLSg96" X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1771159342; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=VQDv5dqbLfmwjDpjsrsMcIq7TVKy2xH2Iv9N7SxzQ0w=; b=wPRLSg96xUsy8p0iOsCDwnH5cj+9uMxzlvIGTbWq/QghBk2JoFRnw8cPsLy1GFm1cKZBJP Y4M/bazNKlIAqhLC4Gp5JMR4uwl/vV//2IPvgAA9Wo+2NyHa/Vuzp/bfh54JxG6b7uR43v Ls9QuLvIJwWiPrbMj3k+fFMyYhtFmwY= From: Thorsten Blum To: Herbert Xu , "David S. Miller" , Nicolas Ferre , Alexandre Belloni , Claudiu Beznea , Lothar Rubusch Cc: Thorsten Blum , stable@vger.kernel.org, linux-crypto@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH] crypto: atmel-sha204a - Fix OTP sysfs read and error handling Date: Sun, 15 Feb 2026 13:41:26 +0100 Message-ID: <20260215124125.465162-2-thorsten.blum@linux.dev> Precedence: bulk X-Mailing-List: stable@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Migadu-Flow: FLOW_OUT Fix otp_show() to read and print all 64 bytes of the OTP zone. Previously, the loop only printed half of the OTP (32 bytes), and partial output was returned on read errors. Propagate the actual error from atmel_sha204a_otp_read() instead of producing partial output. Replace sprintf() with sysfs_emit_at(), which is preferred for formatting sysfs output because it provides safer bounds checking. Cc: stable@vger.kernel.org Fixes: 13909a0c8897 ("crypto: atmel-sha204a - provide the otp content") Signed-off-by: Thorsten Blum --- Compile-tested only. --- drivers/crypto/atmel-sha204a.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/drivers/crypto/atmel-sha204a.c b/drivers/crypto/atmel-sha204a.c index 0fcf4a39de27..793c8d739a0a 100644 --- a/drivers/crypto/atmel-sha204a.c +++ b/drivers/crypto/atmel-sha204a.c @@ -15,6 +15,7 @@ #include #include #include +#include #include #include "atmel-i2c.h" @@ -119,21 +120,21 @@ static ssize_t otp_show(struct device *dev, { u16 addr; u8 otp[OTP_ZONE_SIZE]; - char *str = buf; struct i2c_client *client = to_i2c_client(dev); - int i; + ssize_t len = 0; + int i, ret; - for (addr = 0; addr < OTP_ZONE_SIZE/4; addr++) { - if (atmel_sha204a_otp_read(client, addr, otp + addr * 4) < 0) { + for (addr = 0; addr < OTP_ZONE_SIZE / 4; addr++) { + ret = atmel_sha204a_otp_read(client, addr, otp + addr * 4); + if (ret < 0) { dev_err(dev, "failed to read otp zone\n"); - break; + return ret; } } - for (i = 0; i < addr*2; i++) - str += sprintf(str, "%02X", otp[i]); - str += sprintf(str, "\n"); - return str - buf; + for (i = 0; i < OTP_ZONE_SIZE; i++) + len += sysfs_emit_at(buf, len, "%02X", otp[i]); + return sysfs_emit_at(buf, len, "\n"); } static DEVICE_ATTR_RO(otp); -- Thorsten Blum GPG: 1D60 735E 8AEF 3BE4 73B6 9D84 7336 78FD 8DFE EAD4