Received: by 2002:a05:6500:1b45:b0:1f5:f2ab:c469 with SMTP id cz5csp496482lqb; Wed, 17 Apr 2024 02:40:15 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCWjNt0F/heHqcE5//ewAtVSzg9QllqiRwp/bwMFbwjgunvaMLvFTU/w6Sp7HGdHlgoqMrR/sXPrla4VU7B82DBJkFcKPbE5RkOaCVXLyw== X-Google-Smtp-Source: AGHT+IEPhn1xrk4CNQKWqNcNdKzy64x4hQNxPL28Z1w4U3FBKV9bgh31Co+j9HSSgGAeXy/j9u6T X-Received: by 2002:a17:902:ce89:b0:1e5:10e5:b673 with SMTP id f9-20020a170902ce8900b001e510e5b673mr17840616plg.37.1713346814762; Wed, 17 Apr 2024 02:40:14 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1713346814; cv=pass; d=google.com; s=arc-20160816; b=OZkt1V7lXJ9Xj28r5eexB1f/+AXYwjLS7seVJmo+2qPAmQvq/GJru4WP+TISZDCW5c JgoCLLiw8IkmHCsDzOrR7JfOwz18Pzj1Aq9nB92lWdduIMKIpWwTucfP3b1oMq7ZOGRe nJ8bTGIzyHy68P7Mr4k+9/rqyagiFyLOCSmYHsP3/u0jtbH/V+osaX1NmeopdP7zdiqf mBmntz67K7BMIbMARq1/mbXAthuW4UldQ27xwNkITzPMk07PApgq6PWuqFywH74rtfx4 O92J4VIOAWiG423ObBj86Gj5OSNHTBX8wJiiXtIV4Jupd/vUhEAtBE3U03bLKvZaGKtd qBbA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from; bh=GHogsgWr0+crcrtT+VIATcscEBm8kGMo03W4Nc7FkS0=; fh=Q/fJBPnBnMinsWaL+/VHtwI3DR4foDV1ujXNM08oUFo=; b=C/oYXr28f7KK11scEkC5VvtSwoQ8WEbPvwOpm8FuGLxw8Gnr5l81imFiqz7G6MUZVO tG9zFjwAiCTQg5l81u+HdEfemlIotnKiWJW4VNl4Pm2x7iWyIB1MxJajfllPsEP0JkZj rJ7+BHd6PE96As5iWy4ExhRxu788i5XaJ+6Ac9BUiACiIdon3hbXlNmxKpARgzuw/gys hzZV527wirfAgboUdarn4xnOcOMLGQzNZNX81Bl+NvSzmX+Y9W+Po5zKr7mdLIVyvPAA ut4gxHitmTnatfh4vh4RuueCUGzd76TgOkV352bfl+QB/EDEHBo7QSw0VvoBK2ZkFiiK 93Sw==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; arc=pass (i=1 spf=pass spfdomain=arm.com dmarc=pass fromdomain=arm.com); spf=pass (google.com: domain of linux-kernel+bounces-148259-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-148259-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [2604:1380:45e3:2400::1]) by mx.google.com with ESMTPS id q2-20020a170902a3c200b001e7b6a37c1esi3387420plb.277.2024.04.17.02.40.14 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Apr 2024 02:40:14 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-148259-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) client-ip=2604:1380:45e3:2400::1; Authentication-Results: mx.google.com; arc=pass (i=1 spf=pass spfdomain=arm.com dmarc=pass fromdomain=arm.com); spf=pass (google.com: domain of linux-kernel+bounces-148259-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-148259-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id 7443E2821C3 for ; Wed, 17 Apr 2024 09:40:14 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 73D6A13BC1B; Wed, 17 Apr 2024 09:39:06 +0000 (UTC) Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id A6DAE13B2AD for ; Wed, 17 Apr 2024 09:39:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713346746; cv=none; b=QXJt33mahXNB5FD8zy5K5DfzWztPRUqhXdip4/BjT/QSzI6GLgHilXXIAbfiKXHMLQ/SljGO7LlAhtFH/I3mJlrE3NVvaRuQGOD6qBDPoAsohORHa8UsAJ3PuI8JllSImG5OEQFzpnSGqeh3YaN0J9ZlLQjh5OFYP7M9KkgqVTo= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713346746; c=relaxed/simple; bh=rm5gnrW6WxA+AIgPz7xS8aswy3kAdWUF9mo+gESmArA=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=PmHrPql0qB/pcQZoEkzQvgVCKUYy+sV5B1QYqFgBrG84QQCiiwZWGJTRcG8T41MB/fPbYKpikjTu3qDHjmbTlz+y3dfNypPDuEQQI9V4Uxn2yR06xs00pi1ebadChQF3y/383jyH3pu1B8taFXU6YDJ5E7uNX/Vw1Zx7fn+dObY= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 3870B1477; Wed, 17 Apr 2024 02:39:32 -0700 (PDT) Received: from e125905.cambridge.arm.com (e125905.cambridge.arm.com [10.1.194.73]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 808E13F64C; Wed, 17 Apr 2024 02:39:02 -0700 (PDT) From: Beata Michalska To: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, ionela.voinescu@arm.com, vanshikonda@os.amperecomputing.com Cc: sudeep.holla@arm.com, will@kernel.org, catalin.marinas@arm.com, vincent.guittot@linaro.org, sumitg@nvidia.com, yang@os.amperecomputing.com, lihuisong@huawei.com, viresh.kumar@linaro.org Subject: [PATCH v5 2/5] arm64: amu: Rule out potential use after free Date: Wed, 17 Apr 2024 10:38:45 +0100 Message-Id: <20240417093848.1555462-3-beata.michalska@arm.com> In-Reply-To: <20240417093848.1555462-1-beata.michalska@arm.com> References: <20240417093848.1555462-1-beata.michalska@arm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit For the time being, the amu_fie_cpus cpumask is being exclusively used by the AMU-related internals of FIE support and is guaranteed to be valid on every access currently made. Still the mask is not being invalidated on one of the error handling code paths, which leaves a soft spot with potential risk of uaf for CPUMASK_OFFSTACK cases. To make things sound, set the cpumaks pointer explicitly to NULL upon failing to register the cpufreq notifier. Note that, due to the quirks of CPUMASK_OFFSTACK, this change needs to be wrapped with grim ifdefing (it would be better served by incorporating this into free_cpumask_var ...) Signed-off-by: Beata Michalska --- arch/arm64/kernel/topology.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/arch/arm64/kernel/topology.c b/arch/arm64/kernel/topology.c index 1a2c72f3e7f8..3c814a278534 100644 --- a/arch/arm64/kernel/topology.c +++ b/arch/arm64/kernel/topology.c @@ -244,8 +244,12 @@ static int __init init_amu_fie(void) ret = cpufreq_register_notifier(&init_amu_fie_notifier, CPUFREQ_POLICY_NOTIFIER); - if (ret) + if (ret) { free_cpumask_var(amu_fie_cpus); +#ifdef CONFIG_CPUMASK_OFFSTACK + amu_fie_cpus = NULL; +#endif + } return ret; } -- 2.25.1