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 C5895C48BC1 for ; Wed, 14 Feb 2024 13:30: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=yD1k/nsFevbPvKlxSZu6WGaXyZG8FF0cAGLPXlxa2sY=; b=fc65EbjIn+gbbfCrM/X0NyxwAf yT1sYee4++jN0ulMXVsqxLrFc17GTTQtLHoNTgaYg08EZDeuyf3RBa/8BILx2qPCbSzcjTQ7Nf1DY OdzDLkE7mxtOd1bkhvHQdOO/IKaxGANcaf9Bt2WEgAP74krxvBQXI7vsotN5k6Sl5tXaE5mRGQ7BO SNoAPryI+c+LzCBJCrVFWh26teyaZUrKS6Y5ycSSZP+LMtvlYXDIyhhjDfk+omz96JpZrm1fuYYCw TXa5zPKhHulEZ+e8RIBLtX/PbIuPAB1tOyKeN00FIb+ZOOPdUQzWJ8Dtzv9p1JZdX+Hikqok3RK+8 0hmJNBCg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1raFLZ-0000000D1kt-3iyx; Wed, 14 Feb 2024 13:30:45 +0000 Received: from mail-yw1-x1149.google.com ([2607:f8b0:4864:20::1149]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1raEOs-0000000CoON-3IBC for linux-arm-kernel@lists.infradead.org; Wed, 14 Feb 2024 12:30:11 +0000 Received: by mail-yw1-x1149.google.com with SMTP id 00721157ae682-607ac7dbd61so5952417b3.3 for ; Wed, 14 Feb 2024 04:30:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1707913804; x=1708518604; 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=VU4Qhmc1/wiyAnLqhp7NyhVRjUKG6HLUYDxCsDuDND8=; b=yzm/eOanzvhEJu6bT8Fr300UDrb5oH51mW/UPvo7f9m/5sl3uULCMOxH9Y8Gi835a7 bK7WxM9rQMw7k0tbhohXrLhNxO2zO+v76oeXRRwb3bbEh7OqEhOLpr4+5y3g4fC2pLZO urIUv/TXqm8MUq44jXufH00Zek4e1fAhCXjzAWB/cWgB954WvysAhHo7UXL9Eanero0c gtSKy9sjG9XBYMVRW7fMF/npCAH4Dh2Gvl0h4Vw0+2H5VP6luY2X0A+xKR5tJrCt2YtR J6Zr2SZJzb03ElJGo2VcXpOf4Rx0rkGSQmrVYr6elfreNSLdwCybM65e3s2x0gnjFZ4+ EIiw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707913804; x=1708518604; 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=VU4Qhmc1/wiyAnLqhp7NyhVRjUKG6HLUYDxCsDuDND8=; b=Mh6hVsPm8VWYZtA/nq9r6v80k5Dl7s1xoorDl+TNGEhEgbn5ui6IIlv7I7Zq0eb/+z ZC5tvRQEQEw4N+RPecqyctBtEnXSJbtLmAxr6UsMTT52ZMR+eWwYrCbdwVRd47Xo6roj QhashvB7NTrcPb9gP3iVvmSmSCnl1M0eJG+ff7fPVQX1sO4SkUGva1rHRmtsFx+8JkQN aeaKTomdaFTDh7Ig2Xwcp5XF14t3qz5bUZmA7vlXLd+zOXGwGeh/SM3Oz42Pfld3K1qc RV3iWiN6HYFiX4q4zq3EZM1LVOFOK9thnFcUHlsnfAShBFy/2JzwgrFLeGQIjy220czt M/9A== X-Gm-Message-State: AOJu0YyJ9IlZZv+i7N0yixH9tu5N1lg1PcMlDLjgQTWie5AdfBr94et8 L+oA/RblVy6cf04bsiqcjX8ha/hCvBD1CGrsQjumAIc4seXECBc85OcUd5T/qhhhNL/twwxNWCv mzlVwZtjOjHmpgqQm58ug4hawipA1lobqSK+QjgRKshTMx/qukYpZ2taC7D8p6pi4vynDouAWVQ QUo3xwP+9gEjgbqr8Z6icP+r8OGSwiO8jVVS1ox2Oi X-Google-Smtp-Source: AGHT+IFchcpbZnr9KJQENau2sH/H4wv2Xn6UmZA5R/AdET8Q6CZV2C6Nw3NY4PNIPa9iEc8gYTTWCsaA X-Received: from palermo.c.googlers.com ([fda3:e722:ac3:cc00:28:9cb1:c0a8:118a]) (user=ardb job=sendgmr) by 2002:a0d:ea4b:0:b0:604:d53e:4616 with SMTP id t72-20020a0dea4b000000b00604d53e4616mr374033ywe.6.1707913803679; Wed, 14 Feb 2024 04:30:03 -0800 (PST) Date: Wed, 14 Feb 2024 13:28:57 +0100 In-Reply-To: <20240214122845.2033971-45-ardb+git@google.com> Mime-Version: 1.0 References: <20240214122845.2033971-45-ardb+git@google.com> X-Developer-Key: i=ardb@kernel.org; a=openpgp; fpr=F43D03328115A198C90016883D200E9CA6329909 X-Developer-Signature: v=1; a=openpgp-sha256; l=3267; i=ardb@kernel.org; h=from:subject; bh=Vk2Gqq1aehL+kNtGFfIi4QCIk4Fya8Bx7QIQOwpmnbU=; b=owGbwMvMwCFmkMcZplerG8N4Wi2JIfXMJi7JxJkq1S+OlGqfOWUp/K/+CJOF/8x7U7eX2t76u 22+ySONjlIWBjEOBlkxRRaB2X/f7Tw9UarWeZYszBxWJpAhDFycAjARHllGho7/Qu+WvDsaFvzx q/Ypq6n3oxUv1/znbEv6oh+9LnjNCWNGhq3fZBeXHjNnrV2m076tjac2uW5Rk/0ar6eaeWL1mmn N7AA= X-Mailer: git-send-email 2.43.0.687.g38aa6559b0-goog Message-ID: <20240214122845.2033971-56-ardb+git@google.com> Subject: [PATCH v8 11/43] arm64: kaslr: Use feature override instead of parsing the cmdline again 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-20240214_043007_090911_5E367780 X-CRM114-Status: GOOD ( 15.66 ) 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 early kaslr code open codes the detection of 'nokaslr' on the kernel command line, and this is no longer necessary now that the feature detection code, which also looks for the same string, executes before this code. Signed-off-by: Ard Biesheuvel --- arch/arm64/include/asm/cpufeature.h | 5 ++ arch/arm64/kernel/kaslr.c | 4 +- arch/arm64/kernel/pi/kaslr_early.c | 53 +------------------- 3 files changed, 7 insertions(+), 55 deletions(-) diff --git a/arch/arm64/include/asm/cpufeature.h b/arch/arm64/include/asm/cpufeature.h index acd8f4949583..e309255b7f04 100644 --- a/arch/arm64/include/asm/cpufeature.h +++ b/arch/arm64/include/asm/cpufeature.h @@ -954,6 +954,11 @@ static inline bool arm64_test_sw_feature_override(int feat) &arm64_sw_feature_override); } +static inline bool kaslr_disabled_cmdline(void) +{ + return arm64_test_sw_feature_override(ARM64_SW_FEATURE_OVERRIDE_NOKASLR); +} + u32 get_kvm_ipa_limit(void); void dump_cpu_features(void); diff --git a/arch/arm64/kernel/kaslr.c b/arch/arm64/kernel/kaslr.c index 12c7f3c8ba76..1da3e25f9d9e 100644 --- a/arch/arm64/kernel/kaslr.c +++ b/arch/arm64/kernel/kaslr.c @@ -16,9 +16,7 @@ bool __ro_after_init __kaslr_is_enabled = false; void __init kaslr_init(void) { - if (cpuid_feature_extract_unsigned_field(arm64_sw_feature_override.val & - arm64_sw_feature_override.mask, - ARM64_SW_FEATURE_OVERRIDE_NOKASLR)) { + if (kaslr_disabled_cmdline()) { pr_info("KASLR disabled on command line\n"); return; } diff --git a/arch/arm64/kernel/pi/kaslr_early.c b/arch/arm64/kernel/pi/kaslr_early.c index 167081b30a15..f2305e276ec3 100644 --- a/arch/arm64/kernel/pi/kaslr_early.c +++ b/arch/arm64/kernel/pi/kaslr_early.c @@ -16,57 +16,6 @@ #include #include -/* taken from lib/string.c */ -static char *__init __strstr(const char *s1, const char *s2) -{ - size_t l1, l2; - - l2 = strlen(s2); - if (!l2) - return (char *)s1; - l1 = strlen(s1); - while (l1 >= l2) { - l1--; - if (!memcmp(s1, s2, l2)) - return (char *)s1; - s1++; - } - return NULL; -} -static bool __init cmdline_contains_nokaslr(const u8 *cmdline) -{ - const u8 *str; - - str = __strstr(cmdline, "nokaslr"); - return str == cmdline || (str > cmdline && *(str - 1) == ' '); -} - -static bool __init is_kaslr_disabled_cmdline(void *fdt) -{ - if (!IS_ENABLED(CONFIG_CMDLINE_FORCE)) { - int node; - const u8 *prop; - - node = fdt_path_offset(fdt, "/chosen"); - if (node < 0) - goto out; - - prop = fdt_getprop(fdt, node, "bootargs", NULL); - if (!prop) - goto out; - - if (cmdline_contains_nokaslr(prop)) - return true; - - if (IS_ENABLED(CONFIG_CMDLINE_EXTEND)) - goto out; - - return false; - } -out: - return cmdline_contains_nokaslr(CONFIG_CMDLINE); -} - static u64 __init get_kaslr_seed(void *fdt) { static char const chosen_str[] __initconst = "chosen"; @@ -92,7 +41,7 @@ asmlinkage u64 __init kaslr_early_init(void *fdt) { u64 seed, range; - if (is_kaslr_disabled_cmdline(fdt)) + if (kaslr_disabled_cmdline()) return 0; seed = get_kaslr_seed(fdt); -- 2.43.0.687.g38aa6559b0-goog _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel