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 CDA9AC636D3 for ; Fri, 24 Nov 2023 11:31:54 +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=77X0Ed32mZ93wkyZeolV+zPDRMoCn22EXz9ppp0UzPc=; b=lnUxVJbbWKZEjXf6o9b77Xexhd qRlM/E7eT6S8IfjF2d26jyGuJBIIJZcpO2kSK3ZVVMm4+iO5n7O28yhJxgTq7Xli7GHLXoQpR9E5B +aGWHUGLiR2g/jcSt62S+UFR8DkVy5NzZTdQ9YaZidPIzWN9tK845LAb9wWeeLSQsj9JUBJt8HlP0 xdGnlRL5R72F1dhVdr9A253YCSCVT3y+WV5Me3+n9WZUxp82KEUkaxS+KgurVJ1vEZAyfiCq+Ir0c +SY9gQEwTCQ1wZ6K5c7K2RXx82nDchrc1RfBgyY0xVSRKZAsDIg2MbKAeW2w6sQjgOwXUmOumPgxg wFrzCrzg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1r6UPV-006yT7-12; Fri, 24 Nov 2023 11:31:49 +0000 Received: from mail-yb1-xb4a.google.com ([2607:f8b0:4864:20::b4a]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1r6TIp-006ojN-2K for linux-arm-kernel@lists.infradead.org; Fri, 24 Nov 2023 10:20:57 +0000 Received: by mail-yb1-xb4a.google.com with SMTP id 3f1490d57ef6-da307fb7752so2421366276.0 for ; Fri, 24 Nov 2023 02:20:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1700821250; x=1701426050; 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=s88eJYP3maYPG/OYptXD7KAF+qfIselP+gc+NxV5N+4=; b=j8dTCN+dDK/+QbTg8gz1dy4dN2+dRu/bgbfcwyiPNBDqGp+lhrilMEezz3dybeZ7Tl nNjOBJV4BHeqheirx8VSFEtgu1UxqTggoD4lDxl517bP/5LY88WlbvsvNCYin61KRWlz V7LpRchzGj25WmaUUHbDp2lGQ20oznCw5LnGM/bYvYCJdAhR6jbZ+kLzJ1HtyoUmNkAG XHpn1Ih4e/R5Ya3BLLoX7/QXLEiXI9laO06wLVA1wYnq1T+6YfbU/m7MQh59mEVzLezh GCljoABgVyQDYhPpOsffc9DgzE1x2KEGqlhFVVYr+IGC9GQLzBRD0ZqrsRXxIgDURQ4i Jl3A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700821250; x=1701426050; 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=s88eJYP3maYPG/OYptXD7KAF+qfIselP+gc+NxV5N+4=; b=byj6nrOws/x4VSDSz/VsQfOJzFU+/O8O89LOufY1cbboPKWVvOUiZ+aW240mi8TN4L M1nS7WeKW15GUdyqRrJW/cFDB5bVCOmVt6+9QuSvdekheMn5KxA8RuoFKJ4ZWt//r3A1 b/VZEJNq5UG3DfWdw0VDQCwk0dJlp2owUBhCN001hNoNJNovIYB1/IhiHWEK3bA3R1dl jOJvXtVUC+4aZ0/f90kgHGxQIPfhQOVq4UULCdmudtPnD1onFl6TwPHQ/GZDiur+RSah MnBU3ij77W9XR0Lz50BIHkNR6sf6iWno1bHha5OovlmTNFQVWDSeOZWEUy2FgUffNYKy eUFw== X-Gm-Message-State: AOJu0Yxvupu10zKn1Dq6vytH26mb8f6pfKUvaCQ7X6MYIPKOARwITfTt izYA9XsNC+gRzmseoVahLI9z2RM6LIL0HJysGCXeW92MGPKonwE+INlt2yw+qDIRWQjn1LgijOK KMyQu0FYdHBklhN+DNVdPPwVlKD9Q7BYMshky0Cx1vB3cDui9MVAKQ6TghLkWMS7ef61P7qQBkB c= X-Google-Smtp-Source: AGHT+IER/9IVqXVnzZ9fjYR2TKhwowaYhx2WeGIerc71ZqyOi79XWqG4iEbBhzMI0yLeK7AwP5uYkOis X-Received: from palermo.c.googlers.com ([fda3:e722:ac3:cc00:28:9cb1:c0a8:118a]) (user=ardb job=sendgmr) by 2002:a25:d856:0:b0:dae:e8dc:c026 with SMTP id p83-20020a25d856000000b00daee8dcc026mr61027ybg.13.1700821250027; Fri, 24 Nov 2023 02:20:50 -0800 (PST) Date: Fri, 24 Nov 2023 11:18:56 +0100 In-Reply-To: <20231124101840.944737-41-ardb@google.com> Mime-Version: 1.0 References: <20231124101840.944737-41-ardb@google.com> X-Developer-Key: i=ardb@kernel.org; a=openpgp; fpr=F43D03328115A198C90016883D200E9CA6329909 X-Developer-Signature: v=1; a=openpgp-sha256; l=2767; i=ardb@kernel.org; h=from:subject; bh=yiHvX4IJSuwnRIEhgsJMeOuKMVRgGaEj46ggQfAoQSM=; b=owGbwMvMwCFmkMcZplerG8N4Wi2JITWhYvJHv6/8C2ZPZfxeMm3m1q/a117xVv37zSX6pqjm2 8eyiY5bO0pZGMQ4GGTFFFkEZv99t/P0RKla51myMHNYmUCGMHBxCsBEBBcwMmxWO91qai5TdY7f +RWH2SeJkrCijkRdiauzr1d/ntaxYRkjw6mZvzbOyp8T+CPOIy55V8MUyTXZSe8+beObtX+JQtE xLzYA X-Mailer: git-send-email 2.43.0.rc1.413.gea7ed67945-goog Message-ID: <20231124101840.944737-57-ardb@google.com> Subject: [PATCH v5 16/39] arm64: idreg-override: Avoid parameq() and parameqn() 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-20231124_022051_787989_76D54C39 X-CRM114-Status: GOOD ( 18.48 ) 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 The only way parameq() and parameqn() deviate from the ordinary string and memory routines is that they ignore the difference between dashes and underscores. Since we copy each command line argument into a buffer before passing it to parameq() and parameqn() numerous times, let's just convert all dashes to underscores just once, and update the alias array accordingly. This also helps reduce the dependency on kernel APIs that are no longer available once we move this code into the early mini C runtime. Signed-off-by: Ard Biesheuvel --- arch/arm64/kernel/idreg-override.c | 28 ++++++++++++-------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/arch/arm64/kernel/idreg-override.c b/arch/arm64/kernel/idreg-override.c index 4e32a44560bf..cb4de31071d4 100644 --- a/arch/arm64/kernel/idreg-override.c +++ b/arch/arm64/kernel/idreg-override.c @@ -194,8 +194,8 @@ static const struct { char alias[FTR_ALIAS_NAME_LEN]; char feature[FTR_ALIAS_OPTION_LEN]; } aliases[] __initconst = { - { "kvm-arm.mode=nvhe", "id_aa64mmfr1.vh=0" }, - { "kvm-arm.mode=protected", "id_aa64mmfr1.vh=0" }, + { "kvm_arm.mode=nvhe", "id_aa64mmfr1.vh=0" }, + { "kvm_arm.mode=protected", "id_aa64mmfr1.vh=0" }, { "arm64.nosve", "id_aa64pfr0.sve=0" }, { "arm64.nosme", "id_aa64pfr1.sme=0" }, { "arm64.nobti", "id_aa64pfr1.bt=0" }, @@ -224,7 +224,7 @@ static int __init find_field(const char *cmdline, len = snprintf(opt, ARRAY_SIZE(opt), "%s.%s=", reg->name, reg->fields[f].name); - if (!parameqn(cmdline, opt, len)) + if (memcmp(cmdline, opt, len)) return -1; return kstrtou64(cmdline + len, 0, v); @@ -281,23 +281,29 @@ static __init void __parse_cmdline(const char *cmdline, bool parse_aliases) cmdline = skip_spaces(cmdline); - for (len = 0; cmdline[len] && !isspace(cmdline[len]); len++); - if (!len) + /* terminate on "--" appearing on the command line by itself */ + if (cmdline[0] == '-' && cmdline[1] == '-' && isspace(cmdline[2])) return; - len = min(len, ARRAY_SIZE(buf) - 1); - memcpy(buf, cmdline, len); - buf[len] = '\0'; - - if (strcmp(buf, "--") == 0) + for (len = 0; cmdline[len] && !isspace(cmdline[len]); len++) { + if (len >= sizeof(buf) - 1) + break; + if (cmdline[len] == '-') + buf[len] = '_'; + else + buf[len] = cmdline[len]; + } + if (!len) return; + buf[len] = 0; + cmdline += len; match_options(buf); for (i = 0; parse_aliases && i < ARRAY_SIZE(aliases); i++) - if (parameq(buf, aliases[i].alias)) + if (!memcmp(buf, aliases[i].alias, len + 1)) __parse_cmdline(aliases[i].feature, false); } while (1); } -- 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