From patchwork Tue Nov 9 02:35:37 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Morton X-Patchwork-Id: 12609567 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 mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 97C0EC433F5 for ; Tue, 9 Nov 2021 02:35:40 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 447C961994 for ; Tue, 9 Nov 2021 02:35:40 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 447C961994 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=linux-foundation.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=kvack.org Received: by kanga.kvack.org (Postfix) id DBD4B6B0106; Mon, 8 Nov 2021 21:35:39 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id D44F36B0107; Mon, 8 Nov 2021 21:35:39 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C0E026B0108; Mon, 8 Nov 2021 21:35:39 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0205.hostedemail.com [216.40.44.205]) by kanga.kvack.org (Postfix) with ESMTP id ADA4F6B0106 for ; Mon, 8 Nov 2021 21:35:39 -0500 (EST) Received: from smtpin07.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay05.hostedemail.com (Postfix) with ESMTP id 6F3C4181CB2A5 for ; Tue, 9 Nov 2021 02:35:39 +0000 (UTC) X-FDA: 78787825998.07.50D0D0A Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by imf06.hostedemail.com (Postfix) with ESMTP id DA19F801AB2F for ; Tue, 9 Nov 2021 02:35:38 +0000 (UTC) Received: by mail.kernel.org (Postfix) with ESMTPSA id D4821617E4; Tue, 9 Nov 2021 02:35:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linux-foundation.org; s=korg; t=1636425338; bh=+6aCSN1WBcxmm7trjnHrwbBSnVymibzZJZPeq5CTC0s=; h=Date:From:To:Subject:In-Reply-To:From; b=M3bOgFIjMktIDxPbxAVWNN0nel3a/xMFYcUCyEMv0UPsoOluCj3LLM2KYdZN7y8HX aUlBR6Oj60Ebi9QnIhwBnI59VYJ/d26Fj5AGIDv8OBetJ5so7jq24WTwYUEeUNbihh wfk3g0prJB1ubjVRxxXm3Q7VpwcST873EeBb2fP0= Date: Mon, 08 Nov 2021 18:35:37 -0800 From: Andrew Morton To: akpm@linux-foundation.org, andreyknvl@gmail.com, bigeasy@linutronix.de, dvyukov@google.com, elver@google.com, linux-mm@kvack.org, mm-commits@vger.kernel.org, rostedt@goodmis.org, torvalds@linux-foundation.org, williams@redhat.com Subject: [patch 79/87] kcov: avoid enable+disable interrupts if !in_task() Message-ID: <20211109023537.MOlW3u0_N%akpm@linux-foundation.org> In-Reply-To: <20211108183057.809e428e841088b657a975ec@linux-foundation.org> User-Agent: s-nail v14.8.16 X-Rspamd-Server: rspam02 X-Rspamd-Queue-Id: DA19F801AB2F X-Stat-Signature: pmquphqr6mibko53uo33prz8onpg6gd4 Authentication-Results: imf06.hostedemail.com; dkim=pass header.d=linux-foundation.org header.s=korg header.b=M3bOgFIj; spf=pass (imf06.hostedemail.com: domain of akpm@linux-foundation.org designates 198.145.29.99 as permitted sender) smtp.mailfrom=akpm@linux-foundation.org; dmarc=none X-HE-Tag: 1636425338-491632 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: From: Sebastian Andrzej Siewior Subject: kcov: avoid enable+disable interrupts if !in_task() kcov_remote_start() may need to allocate memory in the in_task() case (otherwise per-CPU memory has been pre-allocated) and therefore requires enabled interrupts. The interrupts are enabled before checking if the allocation is required so if no allocation is required then the interrupts are needlessly enabled and disabled again. Enable interrupts only if memory allocation is performed. Link: https://lkml.kernel.org/r/20210923164741.1859522-5-bigeasy@linutronix.de Link: https://lore.kernel.org/r/20210830172627.267989-5-bigeasy@linutronix.de Signed-off-by: Sebastian Andrzej Siewior Acked-by: Dmitry Vyukov Acked-by: Marco Elver Tested-by: Marco Elver Reviewed-by: Andrey Konovalov Cc: Clark Williams Cc: Steven Rostedt Signed-off-by: Andrew Morton --- kernel/kcov.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) --- a/kernel/kcov.c~kcov-avoid-enabledisable-interrupts-if-in_task +++ a/kernel/kcov.c @@ -869,19 +869,19 @@ void kcov_remote_start(u64 handle) size = CONFIG_KCOV_IRQ_AREA_SIZE; area = this_cpu_ptr(&kcov_percpu_data)->irq_area; } - spin_unlock_irqrestore(&kcov_remote_lock, flags); + spin_unlock(&kcov_remote_lock); /* Can only happen when in_task(). */ if (!area) { + local_irqrestore(flags); area = vmalloc(size * sizeof(unsigned long)); if (!area) { kcov_put(kcov); return; } + local_irq_save(flags); } - local_irq_save(flags); - /* Reset coverage size. */ *(u64 *)area = 0;