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 kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9ED5DC8303C for ; Mon, 7 Jul 2025 11:11:15 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1B10B6B03F6; Mon, 7 Jul 2025 07:11:15 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 161C16B03F7; Mon, 7 Jul 2025 07:11:15 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 09F266B03F8; Mon, 7 Jul 2025 07:11:15 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id EC8B96B03F6 for ; Mon, 7 Jul 2025 07:11:14 -0400 (EDT) Received: from smtpin17.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 9CD561D91FC for ; Mon, 7 Jul 2025 11:11:14 +0000 (UTC) X-FDA: 83637202068.17.FDA1C67 Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) by imf15.hostedemail.com (Postfix) with ESMTP id 6BAAFA0005 for ; Mon, 7 Jul 2025 11:11:12 +0000 (UTC) Authentication-Results: imf15.hostedemail.com; dkim=pass header.d=infradead.org header.s=desiato.20200630 header.b=qezQPJ3w ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1751886673; a=rsa-sha256; cv=none; b=JokKWjbcfc6puIkHptVO6ABKfJTWxYicNukoM5ejRYwMdgt8cBJLSfXFIUVKHUhKGsXwQl GknOEyyMv6lUrfrFs5WL+edQmiA0z/II3DPgEkCBNzPDnvnnxQiLorfq0g/B2eJOobF636 GoFeXsDh5vp7iAUiWOAf6A6xkU+5ggY= ARC-Authentication-Results: i=1; imf15.hostedemail.com; dkim=pass header.d=infradead.org header.s=desiato.20200630 header.b=qezQPJ3w; dmarc=none; spf=none (imf15.hostedemail.com: domain of peterz@infradead.org has no SPF policy when checking 90.155.92.199) smtp.mailfrom=peterz@infradead.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1751886673; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=Y28+p4hX9PEUMHUlBkI77beYKGWjbFcITsIbtfbTURs=; b=S19KACfPOjitrCZrDXLRAhkfrhs4EUQjeYRFwp4gBY6dzva4ZlCa+QNIes6XbeEILfDkNs PwRvHUALdv+t629jQ2u+u/j4ti+RdihAv5dJ54nHA8PyzrimInEH6A5zGMDcxkzd7UkWj/ AmJkklGHlzX/5WXH6QsbZef91FCpSpQ= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=desiato.20200630; h=In-Reply-To:Content-Type:MIME-Version: References:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description; bh=Y28+p4hX9PEUMHUlBkI77beYKGWjbFcITsIbtfbTURs=; b=qezQPJ3wjgMr442XMPlt9n2Ksu W9LQMhSj5LhBqQ8d/2ilKfw/Xh5faImKUfSTZdYh6ljTF4E3OLJydHHiIcupLMTP05tFfBEQA0sbF gT9oR+Zh2Lsy+lTfffMLvfmMsqqNYxllbjKHnDUdez6wLV57ImIeAnx4b3JGg5NzFTB5cd+EEHjWr IoomUVw1wsJXd7cyIvpG1vJkS/D5iUI7eec0+9Y72SE9cAIOPaVWikrOH6Zyy4lMd93gJUhMjMSoq X0hpjXyRXFPvq88lj2eojs0O3NityG+y9vwZDjbcWWLq8S52H1vlmG52cXp6QfWtjxl1HwrQPnkWo 1XK13jmw==; Received: from 77-249-17-252.cable.dynamic.v4.ziggo.nl ([77.249.17.252] helo=noisy.programming.kicks-ass.net) by desiato.infradead.org with esmtpsa (Exim 4.98.2 #2 (Red Hat Linux)) id 1uYjkV-00000008TRB-2rx3; Mon, 07 Jul 2025 11:11:04 +0000 Received: by noisy.programming.kicks-ass.net (Postfix, from userid 1000) id ACA4C300399; Mon, 07 Jul 2025 13:11:02 +0200 (CEST) Date: Mon, 7 Jul 2025 13:11:02 +0200 From: Peter Zijlstra To: Mike Rapoport Cc: Andrew Morton , Andy Lutomirski , Borislav Petkov , Daniel Gomez , Dave Hansen , Ingo Molnar , Luis Chamberlain , Mark Rutland , Masami Hiramatsu , "H. Peter Anvin" , Petr Pavlu , Sami Tolvanen , Steven Rostedt , Thomas Gleixner , linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-modules@vger.kernel.org, linux-trace-kernel@vger.kernel.org, x86@kernel.org Subject: Re: [PATCH 3/8] execmem: rework execmem_cache_free() Message-ID: <20250707111102.GF1613200@noisy.programming.kicks-ass.net> References: <20250704134943.3524829-1-rppt@kernel.org> <20250704134943.3524829-4-rppt@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20250704134943.3524829-4-rppt@kernel.org> X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 6BAAFA0005 X-Stat-Signature: zrcrbeiou9ngrowoeu18zao6nkw4qwji X-Rspam-User: X-HE-Tag: 1751886672-23771 X-HE-Meta: U2FsdGVkX19cf4CXYz4HwHMHNI+nQobxhrTiHYmL/nMY+0XR0TGtlYvdqCTapK0EaUr/wrHhDhfJEcLzaE+JKLbSC/AJLl7dMcsJ1peeTeT+WY5yuJKtaVhXtPVIRyBzWxsmpr1IPEP7njdvR90nNV56+zUd8x86jzziOpT4roTMAP+4j+vGzfWsCW27+A1lcbkHGJ6BJOH0si0VkRyz4I4h6cRQ+fL8JDvDnNcnsonVyD49rsyqQFXCDP3wHV7H83iQrFViKBl+OUOrmeVLK70+IVqKSmEUI0dwOxo1tnEMy12AW2gobWP72jLqlft0WIKUKaUWSBe+vWeEknlFRnAIdpqj8pvn/WqMCbXcvR+6mAWKpzXZ/O+bf0i+ZUiQx8qbLbLJsi1iIEoGisE8AlDiNtbYHWJimz5ik00x2tNP8mae6Qyzc80gtCAUyCywNhVYyTHsknpCtx5b4WbF+pg30ZrEX82VoexeNNjHa9AYyvu6Ju5Ptez/vyK1q2LVkIsoGX1X4f1ECDg7UBTpM30//FUoBC4CeKNjn9yfVo+9+1qPw8/qM8iFRJaKZMQnOP7FcR5PgO1FNlUYvjMd1Gm4QUIDtWALUkZTw3uQbPRPAohL20PGqDnraxuZw+Mv3NBKmioDmNi04JXQYZppZNAKHCj58JQYh1oif/yGqWKQDHnv+djUhxtEjWODcxjN1IRg9xPjBMC3BS9Z46yK6r4x6bjswkYiAl7MIZq6abifTjutS9NcC4DAGAji59k/wm9mMIFmP5hYkF6XTJ68xyx7/DX1UbP/zxBvo7ScvGztssFBWtYum5MB70kbV2PhqqVamuPfAzW1vxUYhnWGE7XL9DoZ5f2ro3cqfR+renDEBhid+AnKMJUrYZ+RPGk2CpEGXDrgVy2UE6fsVO/7Bufk8OINvuZYgyY9R3EF2ASFa2a5+pUVHPxRmY9EePjZMAe+UhA3+jWXGBbfxmg Ar5w8Dg1 ZWd9jsEOcuajipKPU9MG55LU+bT6kUaswvNZj53m4j4hVrwixdoV75T96sYbBX+8pNAfScpoZbpnPswIKVw/dlZcrajsnqdE3sQN9C2hFBiK1n052v/eXHeOiUDxnhYY+aIvVSbzQyHyRG/35RQUjKqJoD+kawxE18hFhHs/4QnMXVzYcRYdVWQI58tdzgZ7ZC6MX 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: List-Subscribe: List-Unsubscribe: On Fri, Jul 04, 2025 at 04:49:38PM +0300, Mike Rapoport wrote: > static bool execmem_cache_free(void *ptr) > { > struct maple_tree *busy_areas = &execmem_cache.busy_areas; > unsigned long addr = (unsigned long)ptr; > MA_STATE(mas, busy_areas, addr, addr); > void *area; > + int err; > + > + guard(mutex)(&execmem_cache.mutex); > > area = mas_walk(&mas); > + if (!area) > return false; > > + err = __execmem_cache_free(&mas, ptr, GFP_KERNEL | __GFP_NORETRY); > + if (err) > + goto err_slowpath; > > schedule_work(&execmem_cache_clean_work); > > return true; > + > +err_slowpath: > + mas_store_gfp(&mas, pending_free_set(ptr), GFP_KERNEL); > + execmem_cache.pending_free_cnt++; > + schedule_delayed_work(&execmem_cache_free_work, FREE_DELAY); > + return true; > } This is a bit if an anti-pattern, using guard() and error goto. Since there is only the one site, its best to write it like so: static bool execmem_cache_free(void *ptr) { struct maple_tree *busy_areas = &execmem_cache.busy_areas; unsigned long addr = (unsigned long)ptr; MA_STATE(mas, busy_areas, addr, addr); void *area; int err; guard(mutex)(&execmem_cache.mutex); area = mas_walk(&mas); if (!area) return false; err = __execmem_cache_free(&mas, ptr, GFP_KERNEL | __GFP_NORETRY); if (err) { mas_store_gfp(&mas, pending_free_set(ptr), GFP_KERNEL); execmem_cache.pending_free_cnt++; schedule_delayed_work(&execmem_cache_free_work, FREE_DELAY); return true; } schedule_work(&execmem_cache_clean_work); return true; } And now I have to ask what happens if mas_store_gfp() returns an error?