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 8F034C4167B for ; Wed, 29 Nov 2023 11:19:51 +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=xCh8B1GIlDCK5WeQhabNQBUSXx8lCQPZ3DeRs6RACGY=; b=o8FQygsYmo/X30vxmoClkppDci dLy0rDhIyav1AtWe1zVGlRkNqN6Y4KqqXRWAbAylTUkyCWNvQpkpsLGVleLmoY6/vLKG8bZAAGZX8 CQPExDgMBgqBWXHkz8cD11HQOH0WS6kSt0Q58JfCGRniKM2YMKhnSkJuXVOAk+1o/g3BNMBfA1+Vm 78VOoxRsKsVtCpeCewrOG1QcOJFsqP8/MbO1lU4hJAZr8QmuwD1wqOOSHnB8DDug5hjFnYcFsX+le Bp/ExZ+sif8wgk7Og4J69A39yugGy8723zgBR5yxMajJoMbv+R8rcaZQez9nUA/mX4/j5KSatJTbE VIbJ/3Cw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1r8Ib7-0080cj-0o; Wed, 29 Nov 2023 11:19:17 +0000 Received: from desiato.infradead.org ([2001:8b0:10b:1:d65d:64ff:fe57:4e05]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1r8Iad-0080DQ-2t for linux-arm-kernel@bombadil.infradead.org; Wed, 29 Nov 2023 11:18:48 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=desiato.20200630; h=Content-Type:Cc:To:From:Subject: Message-ID:References:Mime-Version:In-Reply-To:Date:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description; bh=uAnJI4Z6cNXM930uEEDVva2iDxPYR2Kl80C45nNPKbU=; b=ZfOMu1gO6TMS6+UHIyD6oKnddb qPoeeytXSxDsajLmGH/vMGOaoQMEkb7j+5xvcpIpg++OVsYNJQwN/FcStuq7HNR9a4/GfkQkGkiv+ /EENRhi5f8zz+VYfA0K2aQAfIxeBFA9q3GjdazPRR8jRmoCwt6W/wOprY9EG369SKneAVuxUbiYi6 gXZD058JkZQYJAyyBI3/3WG3LhhEFqEFoufLFC/YmTkeClOkI48egQuHii61z4otLP4o/I8u+BCCn JNVTaKCojky8SWPvvIJkJbnriSzLiISsGISMz9zE/07/O0m3O9k/O15eB78zyRiB5frr1jMHqGGux aDli9P8A==; Received: from mail-yb1-xb4a.google.com ([2607:f8b0:4864:20::b4a]) by desiato.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1r8IaF-000KC7-0X for linux-arm-kernel@lists.infradead.org; Wed, 29 Nov 2023 11:18:38 +0000 Received: by mail-yb1-xb4a.google.com with SMTP id 3f1490d57ef6-d9caf486775so9087134276.2 for ; Wed, 29 Nov 2023 03:18:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1701256700; x=1701861500; 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=uAnJI4Z6cNXM930uEEDVva2iDxPYR2Kl80C45nNPKbU=; b=vhN8yPChugH1yDRVyEony/Y/nbYemAQY1ZNbvRf5ORQRZU6x2GRCU/q+Y0D01WYxRV jAvMMl6DMefcnSAR4h2lWQkxlul4VSRAMEzxEpgXH5NGrtm9b6jsxSTMzXsKLfcJNAOh yeG8rlOJKcOShO9C1/2cB8WMJu1nvPG1I8b/i9wf4oPf3HG1o72xwCUu4FirK1ptG94L O08Iohdu6K89jdBHWr2h5z6aEUIISTFSGt7DhaJgo2WaBSNYEwnnPg54k3P2WUl3JTPg M0R45QVdAJgvyjA++b4qWMrVbaHvBB2ryRCb3uZqIYGXF9T5vb85Rcb/hnGzru/eFM5D 6GPA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701256700; x=1701861500; 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=uAnJI4Z6cNXM930uEEDVva2iDxPYR2Kl80C45nNPKbU=; b=AxrekDlvRn9UxxjRO7Kyfd4mnRUl/Xao5f2CfYVs93TLJIyq37v6oSQhpvD2XUNF5V uJJ6FSuMHoUKRdBPcNxy6kyqNKQrskPhSxfFc/1H36Ixwgv4kvpPaqoPVuhu4fAm1E2E GP6Gkih/lDCbPsPh0/vHpfkTMNF+3b/nGKoUPPpIC4hEU5wja/2M6Fg1CwUAEYF1cCcy 0uYNRZ31CyTgzrquV1fH1v3prAUP5E1Sejw64Bt6fXRU5B1NgSljNkex+vYIDhqN981N N06qYDseX8VnvXmSnIcBUc6TdJ0uenqoV5YWSSv1GW+xZHJVsJpxhUs1Kk67clsqud5Y f1DA== X-Gm-Message-State: AOJu0YxzIdtS/MJmE/glAkv1h6NZxMSCKl8DEFLa3BGOp+UsXcPqh6UR 1wZVm7EeUPoVIxYB/vfOkQsiAHtfKhUlFClVMygPCojZ7E1iALS1wEIV8zyA9OyyDamzimPaYQQ mjLUS28oZqmxmN/HLlZSgs5FLjCEdpYBcNYB1L6T0bmABBjpzlY0FbLuPgUMli/WC0LQCbalsDP s= X-Google-Smtp-Source: AGHT+IF4Bx1cC7OoeG9yGdDjbTnILp6UthCjLVf8zxWUG2lbKQlaCNrUXVqcR3CqxykGjl4VtDNliidE X-Received: from palermo.c.googlers.com ([fda3:e722:ac3:cc00:28:9cb1:c0a8:118a]) (user=ardb job=sendgmr) by 2002:a25:ca02:0:b0:db3:fc48:35f0 with SMTP id a2-20020a25ca02000000b00db3fc4835f0mr544010ybg.6.1701256699903; Wed, 29 Nov 2023 03:18:19 -0800 (PST) Date: Wed, 29 Nov 2023 12:16:24 +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=3271; i=ardb@kernel.org; h=from:subject; bh=8oCDS0S3Q8OvgllxAstDif115+3bk8OZ1EKlt99nAfA=; b=owGbwMvMwCFmkMcZplerG8N4Wi2JITVdtntW6I6oXyv+hSV9j2ubGcm6rvfrXc830b+L3iyfV Bk7/8LGjlIWBjEOBlkxRRaB2X/f7Tw9UarWeZYszBxWJpAhDFycAjCRgEBGhg8B9tuWJ09vjFy1 6PLP7MWWMu9fHhLfON/0t1kU26kb1W2MDN+CqzebR7nEzpiw78X/R/P9Hn7Km7OVU2Kan/6jouC LLMwA X-Mailer: git-send-email 2.43.0.rc1.413.gea7ed67945-goog Message-ID: <20231129111555.3594833-71-ardb@google.com> Subject: [PATCH v6 28/41] 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-20231129_111824_329517_158EF612 X-CRM114-Status: GOOD ( 15.79 ) 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 a41cb0bc220b..9e8c3e345951 100644 --- a/arch/arm64/include/asm/cpufeature.h +++ b/arch/arm64/include/asm/cpufeature.h @@ -948,6 +948,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.rc1.413.gea7ed67945-goog _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel