From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from out-184.mta0.migadu.com (out-184.mta0.migadu.com [91.218.175.184]) (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 586FE3914EB for ; Mon, 4 May 2026 15:50:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=91.218.175.184 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777909840; cv=none; b=SucIi2img17YZujKboyNxCbUIm6s8w8JalRA5VuF0nfnEPmuQXEY6qb8f5a1j4mJsImotfydZ6DMOhLiuU+hgDUmpdE+nVGX8e2j1baBJZ2UTbIu0AHrezS1l4njLFMB29KO2zHtRyA9yXpkOCQbFhwEdDnth1IPu0K7GlfRpMo= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777909840; c=relaxed/simple; bh=f8sQMBsW6cFjuwFwzTu5EJISY44wXfbIEU/0bkdpqiY=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=e3T//wO+r6QUypfil8tQUuwTE+3efL3TO1CCprNvqFZKIketcj5xCvmAn72XxQbWWgNjtEzkFVBcLAInPFe7bVKkRaMx3LKjgsPZ0oCEoczWOvy4WWCqjsmObwKm2akABCFfeuC0LewwCxI6Q2yxljhqIE08y4TmGH+27RM0QS8= 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=R1zHfVnK; arc=none smtp.client-ip=91.218.175.184 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="R1zHfVnK" 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=1777909836; 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=PEQK1PBGjMK7Q+JXhpgOTQpdtZyIwoE5SPoGL4zVShM=; b=R1zHfVnK+H6kidpuLSVpK23AB0ugTJct9+dLkd7p2LZmZqGMRnM5LO5UIZ+zK/iJ/9OWpZ x8pDpSmgkqpvKFWqUU7QJYv1esHPMKpy49qz6BKwUObPWXepUdmBh0GbCiLSrIwU/AgAmt AFPdeJl2xCFFm+kUAcKWwR1GyRajz/4= From: Thorsten Blum To: Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Junhui Liu , Nutty Liu Cc: Thorsten Blum , Alexandre Ghiti , linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH] riscv: pi: replace strlcat with strscpy in get_early_cmdline Date: Mon, 4 May 2026 17:49:24 +0200 Message-ID: <20260504154924.141566-3-thorsten.blum@linux.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1968; i=thorsten.blum@linux.dev; h=from:subject; bh=f8sQMBsW6cFjuwFwzTu5EJISY44wXfbIEU/0bkdpqiY=; b=owGbwMvMwCUWt7pQ4caZUj3G02pJDJk/DrA0L1bb8NDOfuVBl7p9546sC1LZ2rn37LySaKfps oIXe1b87ihlYRDjYpAVU2R5MOvHDN/SmspNJhE7YeawMoEMYeDiFICJaPYw/K9LctI6np3B8InH kM3p+7PLK53ezMgsP51Z9Parx4HFItcZ/lfvf7Pp0Zb6yOmT207O3zWhaSKbw46KXez3U/nlP3a 1RLICAA== X-Developer-Key: i=thorsten.blum@linux.dev; a=openpgp; fpr=1D60735E8AEF3BE473B69D84733678FD8DFEEAD4 Content-Transfer-Encoding: 8bit X-Migadu-Flow: FLOW_OUT Use the return value of strscpy() instead of calling strlen(fdt_cmdline) again and return early on string truncation. Drop the explicit size argument since early_cmdline has a fixed length, which strscpy() determines using sizeof() when the argument is omitted. Replace strlcat() with strscpy() to append CONFIG_CMDLINE. Also remove the unnecessary fdt_cmdline NULL initialization. Signed-off-by: Thorsten Blum --- arch/riscv/kernel/pi/cmdline_early.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/arch/riscv/kernel/pi/cmdline_early.c b/arch/riscv/kernel/pi/cmdline_early.c index 389d086a0718..0afbe4077cb8 100644 --- a/arch/riscv/kernel/pi/cmdline_early.c +++ b/arch/riscv/kernel/pi/cmdline_early.c @@ -12,8 +12,8 @@ static char early_cmdline[COMMAND_LINE_SIZE]; static char *get_early_cmdline(uintptr_t dtb_pa) { - const char *fdt_cmdline = NULL; - unsigned int fdt_cmdline_size = 0; + const char *fdt_cmdline; + ssize_t fdt_cmdline_size = 0; int chosen_node; if (!IS_ENABLED(CONFIG_CMDLINE_FORCE)) { @@ -22,18 +22,18 @@ static char *get_early_cmdline(uintptr_t dtb_pa) fdt_cmdline = fdt_getprop((void *)dtb_pa, chosen_node, "bootargs", NULL); if (fdt_cmdline) { - fdt_cmdline_size = strlen(fdt_cmdline); - strscpy(early_cmdline, fdt_cmdline, - COMMAND_LINE_SIZE); + fdt_cmdline_size = strscpy(early_cmdline, fdt_cmdline); + if (fdt_cmdline_size < 0) + return early_cmdline; } } } if (IS_ENABLED(CONFIG_CMDLINE_EXTEND) || IS_ENABLED(CONFIG_CMDLINE_FORCE) || - fdt_cmdline_size == 0 /* CONFIG_CMDLINE_FALLBACK */) { - strlcat(early_cmdline, CONFIG_CMDLINE, COMMAND_LINE_SIZE); - } + fdt_cmdline_size == 0 /* CONFIG_CMDLINE_FALLBACK */) + strscpy(early_cmdline + fdt_cmdline_size, CONFIG_CMDLINE, + COMMAND_LINE_SIZE - fdt_cmdline_size); return early_cmdline; }