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 93092C4167B for ; Wed, 29 Nov 2023 11:18:52 +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=S2Y8A83YbaT4JhkKp8G5/oSXljKT1c3QhOP7nvPd61w=; b=hAsW7NMCydVHaTwUcq/oyYXRtp bb0gyK+5DzdVXbfgjL90Xm9Ok2ISfFzAYw4IP89BCKAC2r93LlCtS9havTMT3Vtf8Oxx3khoCqaW0 UEnDaR1+MgqMbIxEYZ/OhBgpX3+AFUvJZCkuxILaHKFL15u3McfX3GaAsy6SyGTz5sTAe0tSAp8W4 nX67pHmboDpsiPGAbfMBr7L3uuEdlzYTOZYa/8rn889JJgRoJBTrUpm8IhxfDTlDYXJpb4uCH8Cy6 kBNOa1JdEh2CZZQvH406CNchCGZt2J0Rdl0G+aZUXhtd9KhUBSMBETosZt8ku77IwL4htUNaI3kib 428nNJHw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1r8IaD-007zp4-1X; Wed, 29 Nov 2023 11:18:21 +0000 Received: from mail-wr1-x44a.google.com ([2a00:1450:4864:20::44a]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1r8IZm-007zND-0H for linux-arm-kernel@lists.infradead.org; Wed, 29 Nov 2023 11:18:03 +0000 Received: by mail-wr1-x44a.google.com with SMTP id ffacd0b85a97d-332ee6c2a1aso3572016f8f.1 for ; Wed, 29 Nov 2023 03:17:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1701256672; x=1701861472; 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=IvVJHRLy31FYLWTqA1Xwjct5qaWnQoQ7Frki15OdbPs=; b=vapZJ/dCRtz+IKqDfyCmCMY0E8XKJ4VF9eV1N6SVuOKSaWzhWOmBtmDGtcFwdCbRMb Re0yeBOBKSKf5kw21WueUwoe6tDN/29J3tHLXQTkY++qKE9RUi8WPtsrUVI0WPscRieW +qjzjhcbimobMLqkOTOqHN/zADXVqOg4EGVlIA5XBH+cXQgsEFN0dIGOUetrzlbG2GUp i2mqtms6W2z9lIPZGqCAB+F+UNowanaLu1R+hkUAm/pam0E2DtwL14U1P8XO2Dko8/3U y2HA6AjWKFM6cpm2i+HV0wLWmUe7hSor08tzlk3899zOKHe5ooGhCZKVnF+JhWspSrSP rmNg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701256672; x=1701861472; 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=IvVJHRLy31FYLWTqA1Xwjct5qaWnQoQ7Frki15OdbPs=; b=wRUbdddAO40v3IBDPPbG6SIafSNYpO+ynxT9oFAykVvnSppQKxAsLSIRoiI3/N26p/ LRYzMgy57Abn20QA4a1cNjeCC/+yppnDSYWrwXbdAGSPbdf7+kEm4R/XyQRLvyucEwQ7 wlid13Q1gmYzc9cyuQa6Ohne57iXRTkxiH87v/BcK9dCJqLkgqmjB2TkOBnRAB8OCBKB iavG687jhbffTQBVVjLZ/GqkputsD3cRtj3jSuIdUOtmmE6Mp6fZrTSWnfXdYOcETMNN 5SvOtQVKKsBJoco7OOXQVGbO31ZURqjebNgIjBP5b9AUo4IlnGHmY87ptTCRFtdJkyEr CQ5g== X-Gm-Message-State: AOJu0YyS7/rWQArOmcRBpLte+t2759nwplRY/AuuZn21qKLO7J5zt3QU C0MPdgZVxslfpRio4KUwJDLXLWNTlWdvnD6XrtQadCuCtPf8IGnnegvBH2mY7YZbop25V3GCB/K SmwbAZOCDmBqAQH5Lhusc8IlNPjpOORW+oiP3+Y9lTp/QyD5hLgDzAGYdXZNiXoVdbqD9SZkwwk k= X-Google-Smtp-Source: AGHT+IHDjLT19PeaFgZmVBTP+P/6knc9HdsrBi11+td/6Akh75VyKbr+PyiYoU5+jxc6W+ChTaC2r4Vc X-Received: from palermo.c.googlers.com ([fda3:e722:ac3:cc00:28:9cb1:c0a8:118a]) (user=ardb job=sendgmr) by 2002:adf:b646:0:b0:333:52d:4487 with SMTP id i6-20020adfb646000000b00333052d4487mr126692wre.2.1701256672075; Wed, 29 Nov 2023 03:17:52 -0800 (PST) Date: Wed, 29 Nov 2023 12:16:12 +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=2767; i=ardb@kernel.org; h=from:subject; bh=FHdCVLoaiy3Fcjs2ABcOKiRlwdvErGziJnFheLYXz7k=; b=owGbwMvMwCFmkMcZplerG8N4Wi2JITVdtk5CSOORG8NeP6nImc1nzcWLuLu/1L97fiFbS55/0 b4Wl8qOUhYGMQ4GWTFFFoHZf9/tPD1RqtZ5lizMHFYmkCEMXJwCMJHwXYwMn2LvCb599v1D0hmX C6IKGR+TTtue9JVQU5y/VKx7igOfLsP/ZGvemrbW+7KnpkjP3PRp/sm1/k/WP/P6xr2p7h1LIeN JJgA= X-Mailer: git-send-email 2.43.0.rc1.413.gea7ed67945-goog Message-ID: <20231129111555.3594833-59-ardb@google.com> Subject: [PATCH v6 16/41] 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-20231129_031754_155187_0495AF2A X-CRM114-Status: GOOD ( 19.00 ) 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 ca1b8d2dbe99..1eca93446345 100644 --- a/arch/arm64/kernel/idreg-override.c +++ b/arch/arm64/kernel/idreg-override.c @@ -185,8 +185,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" }, @@ -215,7 +215,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); @@ -272,23 +272,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