From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id CB2B1C46CA7 for ; Wed, 29 Nov 2023 12:31:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:From:Subject:Message-ID: References:Mime-Version:In-Reply-To:Date:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=OYISAE1vTHKso11NFVxUruQ2P+bJJPvJc9uHq1MFqbk=; b=QBR6dRRwC3C1IeU6khyuzxWiQA ejiCOjza+ZwDY3mNUNbtBhRmmoD3L02ooiZaf3mQwx4m+J+z2DFTCy4OHBdQX/SGciKmu5g/YDFba tbGzIlJ8YtFYNrTjZF/vD1w0jiFCgUtehCWN3PYq+IBmc8CBKhqaW3THG+UiCaOEmbiXEH1TXt3/w dJWZPGQf7LEsNw8JADCVVyv+dtaMSid2nFxmMK0XMA6mvLoeBKk+mrqJJclfPZPa/61nzBOmqWkEk xEOifZ3pBDrK06Y30a1uUpVpSxQC9umvvcKFuAJmV08sJbu6GERCM8sbfMNwXAPxvheLDP57LTos1 fSkyuYew==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1r8Jik-008KHO-0W; Wed, 29 Nov 2023 12:31:14 +0000 Received: from mail-yw1-x1149.google.com ([2607:f8b0:4864:20::1149]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1r8IZq-007zRM-12 for linux-arm-kernel@lists.infradead.org; Wed, 29 Nov 2023 11:18:05 +0000 Received: by mail-yw1-x1149.google.com with SMTP id 00721157ae682-5ca2a6f07b6so96799857b3.2 for ; Wed, 29 Nov 2023 03:17:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1701256676; x=1701861476; darn=lists.infradead.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=7Zjdc2DLHG6AgVnMMo8yk6dR7ZJylA2K7dGMp68yufY=; b=AwrEZYE7cl3tv2M94XxJnX21N/EOh2y6GsUscuXrNkYMwmDy0JTlm2avxyXw7U/ewp WKr3AUF3P6mIvj/fDfhsMpxU3u/U/2L1RINE06UxYR4eihmMV6eAJOr5uY3EOE+F+3p5 clo1ENS7DRUaWNgiSBMqo+A91NNbyUIS/syzVI1kMCatSU7q2Lu0oarcLR66zVDockvz v0gU1y9cVxSqYNRvFfvDmBwW1mjxqdkUNTclSxxEwNg2Wv35/FHbyjmhbq2JNRrPFPtB ESJl6yC3wUk08aZyh8d91pjOHJDKTkJEBWzRCaKMRkxqSBHbCJDXgwTE8WXwsRkLMxE2 rsqg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701256676; x=1701861476; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=7Zjdc2DLHG6AgVnMMo8yk6dR7ZJylA2K7dGMp68yufY=; b=uhZ5CNiL4mLFYBMF2pXL23chHtTCDfgKHTnonJUB2er4iCN7Jxu23ngDVGutrG8OxO MwnmAdZ9U54NCN5e2auhMMtKO2tnExW0d9wpycV3+87/dWQ1eYuqunLnSTrCBXfCzFDE MEjWXaADfKu1JcXk7rVgvUGQomhhyozhe7oar+wxE2s9PrfSZuBjMqQD/fcEkgkeF31j zV3GyUA1YHzYeTbdIgvw/UZY1nId9BgpxpQZVgc56qT26b0Pmj7iPRC9aVQp3wR7KYeX Q+se+CGD1z5+bBUFEYsIuzZKWWPT9VzABHenc8VMie6/S3JAPK23roFLtIAHPE9iFwAm V22g== X-Gm-Message-State: AOJu0YxIAZwrCVUZcQnj6GkqbEJCmIyu9bIsFic0n8mj2KVdotOvkdVX u1ydZba2Qf2pkkC8xgbzNl7ebc7EcgfIQS2SmCo4yiKxwBptU6IEHGQg/piPb6HxB04b9AJlDcu 789Vu0/+wpuJFLY246fNN1zNQ5Aa5yjUZ9Eobi5BHIKXRVfCDo4IKHJjXP9vM7mYCeNSNTOH1gP 0= X-Google-Smtp-Source: AGHT+IGVxSapj+EdH/PZuAMJ/GwaPXGzdpLgpeV3TD9xCePOe8A/zYHG25EOilMxR7qKVj9g8qV2Ctrb X-Received: from palermo.c.googlers.com ([fda3:e722:ac3:cc00:28:9cb1:c0a8:118a]) (user=ardb job=sendgmr) by 2002:a05:690c:2e87:b0:5cc:3d0c:2b60 with SMTP id eu7-20020a05690c2e8700b005cc3d0c2b60mr478754ywb.4.1701256676489; Wed, 29 Nov 2023 03:17:56 -0800 (PST) Date: Wed, 29 Nov 2023 12:16:14 +0100 In-Reply-To: <20231129111555.3594833-43-ardb@google.com> Mime-Version: 1.0 References: <20231129111555.3594833-43-ardb@google.com> X-Developer-Key: i=ardb@kernel.org; a=openpgp; fpr=F43D03328115A198C90016883D200E9CA6329909 X-Developer-Signature: v=1; a=openpgp-sha256; l=2416; i=ardb@kernel.org; h=from:subject; bh=GkPYyFDMuJ60IVFpaw9+3JwwfUtz2bndbgQb7r6dDw0=; b=owGbwMvMwCFmkMcZplerG8N4Wi2JITVdtuHZtGfut7bVnFW+qhDRmSy73IazcEfFhqC406W9s TpLbF92lLIwiHEwyIopsgjM/vtu5+mJUrXOs2Rh5rAygQxh4OIUgImsCmdkaK/deeavW+bChava pprErBKbXBwc9uXAzKrwywJXlfZ0/WVkuLPrnMKiqKobzw/kf9JqbXZ6tkfJ8JT9U2tTp8fHH5n r8wMA X-Mailer: git-send-email 2.43.0.rc1.413.gea7ed67945-goog Message-ID: <20231129111555.3594833-61-ardb@google.com> Subject: [PATCH v6 18/41] arm64: idreg-override: Avoid sprintf() for simple string concatenation From: Ard Biesheuvel To: linux-arm-kernel@lists.infradead.org Cc: Ard Biesheuvel , Catalin Marinas , Will Deacon , Marc Zyngier , Mark Rutland , Ryan Roberts , Anshuman Khandual , Kees Cook X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231129_031758_384190_6713A843 X-CRM114-Status: GOOD ( 16.84 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org From: Ard Biesheuvel Instead of using sprintf() with the "%s.%s=" format, where the first string argument is always the same in the inner loop of match_options(), use simple memcpy() for string concatenation, and move the first copy to the outer loop. This removes the dependency on sprintf(), which will be difficult to fulfil when we move this code into the early mini C runtime. Signed-off-by: Ard Biesheuvel --- arch/arm64/kernel/idreg-override.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/arch/arm64/kernel/idreg-override.c b/arch/arm64/kernel/idreg-override.c index 8b22ca523186..cf1df5f6fbc1 100644 --- a/arch/arm64/kernel/idreg-override.c +++ b/arch/arm64/kernel/idreg-override.c @@ -206,14 +206,15 @@ static int __init parse_nokaslr(char *unused) } early_param("nokaslr", parse_nokaslr); -static int __init find_field(const char *cmdline, +static int __init find_field(const char *cmdline, char *opt, int len, const struct ftr_set_desc *reg, int f, u64 *v) { - char opt[FTR_DESC_NAME_LEN + FTR_DESC_FIELD_LEN + 2]; - int len; + int flen = strlen(reg->fields[f].name); - len = snprintf(opt, ARRAY_SIZE(opt), "%s.%s=", - reg->name, reg->fields[f].name); + // append '=' to obtain '.=' + memcpy(opt + len, reg->fields[f].name, flen); + len += flen; + opt[len++] = '='; if (memcmp(cmdline, opt, len)) return -1; @@ -223,15 +224,21 @@ static int __init find_field(const char *cmdline, static void __init match_options(const char *cmdline) { + char opt[FTR_DESC_NAME_LEN + FTR_DESC_FIELD_LEN + 2]; int i; for (i = 0; i < ARRAY_SIZE(regs); i++) { const struct ftr_set_desc *reg = prel64_pointer(regs[i].reg); struct arm64_ftr_override *override; + int len = strlen(reg->name); int f; override = prel64_pointer(reg->override); + // set opt[] to '.' + memcpy(opt, reg->name, len); + opt[len++] = '.'; + for (f = 0; reg->fields[f].name[0] != '\0'; f++) { u64 shift = reg->fields[f].shift; u64 width = reg->fields[f].width ?: 4; @@ -239,7 +246,7 @@ static void __init match_options(const char *cmdline) bool (*filter)(u64 val); u64 v; - if (find_field(cmdline, reg, f, &v)) + if (find_field(cmdline, opt, len, reg, f, &v)) continue; /* -- 2.43.0.rc1.413.gea7ed67945-goog _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel