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 F1906EB64D9 for ; Sat, 17 Jun 2023 06:11:07 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6F1F56B0072; Sat, 17 Jun 2023 02:11:07 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 6A1C56B0075; Sat, 17 Jun 2023 02:11:07 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 569AE8E0001; Sat, 17 Jun 2023 02:11:07 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 4433A6B0072 for ; Sat, 17 Jun 2023 02:11:07 -0400 (EDT) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id EF41EB0B30 for ; Sat, 17 Jun 2023 06:11:06 +0000 (UTC) X-FDA: 80911216932.16.FB1B085 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf03.hostedemail.com (Postfix) with ESMTP id 0217820017 for ; Sat, 17 Jun 2023 06:11:04 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b="kpVRRR3/"; spf=pass (imf03.hostedemail.com: domain of rppt@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=rppt@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1686982265; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=r38PRqppWJi5DCcO6dUaoG/+GxOnj7iRUGonn0Cy7rA=; b=8O3PM4JN+7CpPjudwaS3ROWoYxhAmvPeKlA2AGRSkYJD+ddBqu5FELGPK53XjdKvxy53YU WiRvsUowcJTRnENFxySSFlxk0YHLQtmLsI5nUiG4bXbIvxEUaubCIHcCPHopZ04VRIeg1+ ih52OhHdCjJIJbklSw1/AWPmVAEzCoI= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1686982265; a=rsa-sha256; cv=none; b=otZ7rweHEdPYIoKzJfjXR58PI7d2ScS4qFHh5qh4WoJb5ShS3q6Ov2yPpgHnE4Oibo/1m/ fl9QNQpTQuCIgTBdbwLPQ16t/C/To+9oKdOiLxVoVrn4LCXK4I/sJ3CJLdSJiFd/pML8TP pDWqpNmi4EIpWAFJwzaWqMzwdErQG4s= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b="kpVRRR3/"; spf=pass (imf03.hostedemail.com: domain of rppt@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=rppt@kernel.org; dmarc=pass (policy=none) header.from=kernel.org Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 0A44860F56; Sat, 17 Jun 2023 06:11:04 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 232F1C433C8; Sat, 17 Jun 2023 06:10:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1686982263; bh=1X6Vc8+Xzykk7Z2p+5RPkPnfKk/mxTwRqvgQiLyFLcs=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=kpVRRR3/peLouH5K6845IoDymP4RzHQ5X18L/qapqW+HSOSVD4Jxe+dS8ZHi81pu/ 6UGSL3ryafkglY404kB9NewuLJthdXrDKmiG1bUa/SbIGImcdFFTImcXA24Lrq1XBP b8jHFLQ6gc3Wlj/T62OORePu3DpO0oegza9UGNNTomGmTdYPVnUkXHwlXXNP8xNb6O mSUdao6gRKvwJRP5+ktwASUtigGyhHJfmUrvUL8UkoscW+emJo4VTKfMECcoxbnJ1O 71I0q0m7dm69SI0vCCHrQzATzQcgIJXdFUCmromH14CzN/7cF+UERF73BpE9q6ULNL UyjIthY/V8Lsw== Date: Sat, 17 Jun 2023 09:10:15 +0300 From: Mike Rapoport To: "Edgecombe, Rick P" Cc: "linux-kernel@vger.kernel.org" , "tglx@linutronix.de" , "mcgrof@kernel.org" , "deller@gmx.de" , "davem@davemloft.net" , "nadav.amit@gmail.com" , "linux@armlinux.org.uk" , "netdev@vger.kernel.org" , "linux-mips@vger.kernel.org" , "linux-riscv@lists.infradead.org" , "hca@linux.ibm.com" , "catalin.marinas@arm.com" , "kent.overstreet@linux.dev" , "puranjay12@gmail.com" , "linux-s390@vger.kernel.org" , "palmer@dabbelt.com" , "chenhuacai@kernel.org" , "tsbogend@alpha.franken.de" , "linux-trace-kernel@vger.kernel.org" , "linux-parisc@vger.kernel.org" , "christophe.leroy@csgroup.eu" , "x86@kernel.org" , "mpe@ellerman.id.au" , "mark.rutland@arm.com" , "rostedt@goodmis.org" , "linuxppc-dev@lists.ozlabs.org" , "will@kernel.org" , "dinguyen@kernel.org" , "naveen.n.rao@linux.ibm.com" , "sparclinux@vger.kernel.org" , "linux-modules@vger.kernel.org" , "bpf@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "song@kernel.org" , "linux-mm@kvack.org" , "loongarch@lists.linux.dev" , "akpm@linux-foundation.org" Subject: Re: [PATCH v2 04/12] mm/execmem, arch: convert remaining overrides of module_alloc to execmem Message-ID: <20230617061015.GO52412@kernel.org> References: <20230616085038.4121892-1-rppt@kernel.org> <20230616085038.4121892-5-rppt@kernel.org> <15f5dff8217b1a2e16697d40e48dee6dd1f9b2f3.camel@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <15f5dff8217b1a2e16697d40e48dee6dd1f9b2f3.camel@intel.com> X-Stat-Signature: rr1wm1gy3eie6jzmc9dodax563g1emra X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: 0217820017 X-Rspam-User: X-HE-Tag: 1686982264-896289 X-HE-Meta: U2FsdGVkX1+Z16ZvXVerfH5q5r5KwFxCECitEVJ/wScoQQoWz0ZD5RWHBj8QVwNYMArcGZh+hnjy5/94HYOeybUCoGmnxiaD9kHG1lsNdMtQ/MpRb7GbjgYuqYEmfvDEm+i5fl1sdMoS6kodyfqJCUjn2NLRyC28h5Ozhc8GHwJO1Lj9eCDTqO0+qCPRpwhx1Mk3u5q9cJujgAtBVLnHPycBr1ou6MEbHbWWukKHEA4KcMF5quwgZD1/IXksoBu+g7S7WB6rsNtiFc2MO7L2QeNDeOwEQ99uCQ1doiCbUqz1q/JHWbtCc4z9O4GJtJ6rbFlr6wRjLwNpPSBtdtvkn/aoC21uOVq7BT4RM5Rweix4dYxpfrq1jIxgSwQTkrTstCDOI9yxtrcSD0CwH6gFev4stfBDQkABmg68S+uLJfoMjX1L2qA1AZMvQN+tJmouLeTnlIkSbKhlLqdSkDxxL+2K/3p13YqrRL4gL0a4/4egJ/IwMPFAb3WpjxngoIgX1oRQlSmEXKs7qaTywmu1/b5oLb/zUE0fOgnbQ9438PBKIOtVUXniAoGZ0kMSxxAcmiMtfzsF/PRW852jrUHUBsTuM9HjVJ5/wNMAx7PDcnZLMUftm8bszgyZdsWYyyDV/lDmdSuSbILHujXDOA7f/Qus9llBgtFL2PsZKZR+6q4sf/YSsrM+AtukpeEHn6z6wZLla+5XHqbPY4BiMOl+SnDL9E/Xh+lNn7ViW5qTrjuUNEcZj3rq06z/C5IbfkasPO7pALslgmnTCIrw9eyHskt7ZNnbjGpiqMl+oAQJz/5NUyVv1wMWRgb66RDlPaLl0XdCADwZQzHakdau+cvDxoJZzAivswHEBLhEtnsMc5x4ZAuV/sS3ly0sU76SxAMIv13qB2AoPCP48G2vl5eqznymulaZwLDMezrZKBmmFM6nuKl8yiA0P/a+j/zrnKQ00/kMGdyGxrhigGvVWr3 r/VZcVHj R0pgtBfloxmn86Yq1BzkFTmmnbC5T8QRdAqftaPr2xTt15VnlxjXL/FNgcdn6ItuPQQnl+nnFdyxxWC/N15fro93jYP5MQslCnNEfy3mCo+fGxhSC02cq7D0mr6L/yY8+E/Lm5SgW5UDdIyUEEZYNb9RX7Qb0JYyzidlFDRzNe5dRLWkZyATvbRKER9fR5rc1w9TpKL9ZGm1wuoGEaMRfKZXC4XRBtDI9LqIpYNyiLgZbw9jt3PxZFU5uQJXen3nBJ4W6FwmxffmwyiOekxahtR9Vw7vI6PBrggXfNdzydH2k6hAL5d7NBk9Tnv+sasnQmPO39aaer1NUXrp7CZ1qTnLRFznVY6xN+zv46OG/G1NhbEEeykbTMHxK39V40Zh2XhZW+o7Nyu0faQ2eoy/ZtdyQGhKfzk3kJpsj48PakDLMPiDm/ads7suQYz5KQPpRBC0k X-Bogosity: Ham, tests=bogofilter, spamicity=0.000004, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Fri, Jun 16, 2023 at 04:16:28PM +0000, Edgecombe, Rick P wrote: > On Fri, 2023-06-16 at 11:50 +0300, Mike Rapoport wrote: > > -void *module_alloc(unsigned long size) > > -{ > > -       gfp_t gfp_mask = GFP_KERNEL; > > -       void *p; > > - > > -       if (PAGE_ALIGN(size) > MODULES_LEN) > > -               return NULL; > > +static struct execmem_params execmem_params = { > > +       .modules = { > > +               .flags = EXECMEM_KASAN_SHADOW, > > +               .text = { > > +                       .alignment = MODULE_ALIGN, > > +               }, > > +       }, > > +}; > > Did you consider making these execmem_params's ro_after_init? Not that > it is security sensitive, but it's a nice hint to the reader that it is > only modified at init. And I guess basically free sanitizing of buggy > writes to it. Makes sense. > >   > > -       p = __vmalloc_node_range(size, MODULE_ALIGN, > > -                                MODULES_VADDR + > > get_module_load_offset(), > > -                                MODULES_END, gfp_mask, PAGE_KERNEL, > > -                                VM_FLUSH_RESET_PERMS | > > VM_DEFER_KMEMLEAK, > > -                                NUMA_NO_NODE, > > __builtin_return_address(0)); > > +struct execmem_params __init *execmem_arch_params(void) > > +{ > > +       unsigned long start = MODULES_VADDR + > > get_module_load_offset(); > > I think we can drop the mutex's in get_module_load_offset() now, since > execmem_arch_params() should only be called once at init. Right. Even more, the entire get_module_load_offset() can be folded into execmem_arch_params() as if (IS_ENABLED(CONFIG_RANDOMIZE_BASE) && kaslr_enabled()) module_load_offset = get_random_u32_inclusive(1, 1024) * PAGE_SIZE; > >   > > -       if (p && (kasan_alloc_module_shadow(p, size, gfp_mask) < 0)) > > { > > -               vfree(p); > > -               return NULL; > > -       } > > +       execmem_params.modules.text.start = start; > > +       execmem_params.modules.text.end = MODULES_END; > > +       execmem_params.modules.text.pgprot = PAGE_KERNEL; > >   > > -       return p; > > +       return &execmem_params; > >  } > >   > -- Sincerely yours, Mike.