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 3C760C369C2 for ; Fri, 25 Apr 2025 10:53:51 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E4E966B0012; Fri, 25 Apr 2025 06:53:48 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id DD5626B008A; Fri, 25 Apr 2025 06:53:48 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C50E56B0096; Fri, 25 Apr 2025 06:53:48 -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 A2CF86B0012 for ; Fri, 25 Apr 2025 06:53:48 -0400 (EDT) Received: from smtpin25.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 15E7C120BB7 for ; Fri, 25 Apr 2025 10:53:50 +0000 (UTC) X-FDA: 83372255820.25.80794F0 Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130]) by imf28.hostedemail.com (Postfix) with ESMTP id D19D1C000D for ; Fri, 25 Apr 2025 10:53:47 +0000 (UTC) Authentication-Results: imf28.hostedemail.com; dkim=pass header.d=suse.de header.s=susede2_rsa header.b=LZXHZdSW; dkim=pass header.d=suse.de header.s=susede2_ed25519 header.b=0RkbJDl1; dkim=pass header.d=suse.de header.s=susede2_rsa header.b=LZXHZdSW; dkim=pass header.d=suse.de header.s=susede2_ed25519 header.b=0RkbJDl1; dmarc=pass (policy=none) header.from=suse.de; spf=pass (imf28.hostedemail.com: domain of pfalcato@suse.de designates 195.135.223.130 as permitted sender) smtp.mailfrom=pfalcato@suse.de ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1745578428; a=rsa-sha256; cv=none; b=umwXmIFFhlr9y7cl9Ql1zqMRNoQdv6jhxyHd1ItbdhIy6B1MnbI2htUFmgJMLUJj7hJYGE YpAJEbCg1CZCtVmVy00ZXT9nG/bO5XGvxpJos3JB+a8NFSms6G6QQZIsRzQN+VHSlRUJW4 JCVcMWknwDBcgRGJd0U79FZY0jxRaiU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1745578428; 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=hDUol4MQ50pAphpzZ6W2npMBigYKRKuXYHWjYCtm5sw=; b=HZ+sQiOvH0UD2ZwToSFR580Ndwd5fhtqzW+gu2ugzWYrK78LTegEitkKWF/jXMqPlm592Y yyL6sZhcJSE2mCeMFxot62gGZzKWiRUnt0/gzFUK71H4iDHWYnyKsCY51N9i3eyfhzbQYl FZqIR+4QEPHz8cKSf8c7fFAfh3gaf5o= ARC-Authentication-Results: i=1; imf28.hostedemail.com; dkim=pass header.d=suse.de header.s=susede2_rsa header.b=LZXHZdSW; dkim=pass header.d=suse.de header.s=susede2_ed25519 header.b=0RkbJDl1; dkim=pass header.d=suse.de header.s=susede2_rsa header.b=LZXHZdSW; dkim=pass header.d=suse.de header.s=susede2_ed25519 header.b=0RkbJDl1; dmarc=pass (policy=none) header.from=suse.de; spf=pass (imf28.hostedemail.com: domain of pfalcato@suse.de designates 195.135.223.130 as permitted sender) smtp.mailfrom=pfalcato@suse.de Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [IPv6:2a07:de40:b281:104:10:150:64:97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 39245211CC; Fri, 25 Apr 2025 10:53:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1745578426; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=hDUol4MQ50pAphpzZ6W2npMBigYKRKuXYHWjYCtm5sw=; b=LZXHZdSWJ4FaCTcIqZyvAvnv2ztHdQDpGQEOaJ69UsEavsmIfwbJjvDQl5NMHb+VvJd0nU BjtHHwZOVKvS+xlBLd0okYFwCTSR3HtLTCOtHWo2/XGalYpOcaBvumGjl1pCMNaEx8gS/B mawo5798n2O2sgHU+q2KpfTMmX5X4Dw= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1745578426; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=hDUol4MQ50pAphpzZ6W2npMBigYKRKuXYHWjYCtm5sw=; b=0RkbJDl157bjkWVXiPmD3gN6jmpx5uTHmkBb1bZ1oyX6zLdn8Knz5V+rV9G7j1Mg9/jaWG D9sRdNzIJ9apweCQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1745578426; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=hDUol4MQ50pAphpzZ6W2npMBigYKRKuXYHWjYCtm5sw=; b=LZXHZdSWJ4FaCTcIqZyvAvnv2ztHdQDpGQEOaJ69UsEavsmIfwbJjvDQl5NMHb+VvJd0nU BjtHHwZOVKvS+xlBLd0okYFwCTSR3HtLTCOtHWo2/XGalYpOcaBvumGjl1pCMNaEx8gS/B mawo5798n2O2sgHU+q2KpfTMmX5X4Dw= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1745578426; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=hDUol4MQ50pAphpzZ6W2npMBigYKRKuXYHWjYCtm5sw=; b=0RkbJDl157bjkWVXiPmD3gN6jmpx5uTHmkBb1bZ1oyX6zLdn8Knz5V+rV9G7j1Mg9/jaWG D9sRdNzIJ9apweCQ== Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 3CC211388F; Fri, 25 Apr 2025 10:53:45 +0000 (UTC) Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167]) by imap1.dmz-prg2.suse.org with ESMTPSA id n+BYCLlpC2jPKAAAD6G6ig (envelope-from ); Fri, 25 Apr 2025 10:53:45 +0000 Date: Fri, 25 Apr 2025 11:53:43 +0100 From: Pedro Falcato To: Lorenzo Stoakes Cc: Kees Cook , Andrew Morton , "Liam R . Howlett" , Vlastimil Babka , Jann Horn , David Hildenbrand , Alexander Viro , Christian Brauner , Jan Kara , Suren Baghdasaryan , linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 2/4] mm: perform VMA allocation, freeing, duplication in mm Message-ID: References: <0f848d59f3eea3dd0c0cdc3920644222c40cffe6.1745528282.git.lorenzo.stoakes@oracle.com> <51903B43-2BFC-4BA6-9D74-63F79CF890B7@kernel.org> <7212f5f4-f12b-4b94-834f-b392601360a3@lucifer.local> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <7212f5f4-f12b-4b94-834f-b392601360a3@lucifer.local> X-Rspamd-Action: no action X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: D19D1C000D X-Stat-Signature: mkwxqdhqbsnqr5hg3i6mp3ebnchtjzk5 X-Rspam-User: X-HE-Tag: 1745578427-49196 X-HE-Meta: U2FsdGVkX19FtfKIttQqQKe4MzGy1sBcRA71oM34EjUytHi9MS4JfNoxJE+PPK6HqBCf8P9Z/ll7CJ0RyXUqxFtytqOb3mHio7QNW6lpO9h9UT6qE2DhGPr8M1F8/gHAZNHeKc+bqU13dM1zYVONNVRLgdBTtH57EJMpyBkzd9QkWK1b1+LppEA9Woi7/54PPo6HzaltW8WdLQIqwnehUW4q2OEm8IkxPPy0uWM+7eSTIagud1LNMv48z5/czax6u+1I6eHlBy6oPjyuKUydpjLBRc2fRYPwPINs11rSh+HRIOTU+3JWzfqHPucw8+7754s4f7kuBWSwNtF/cVpoMPY6F79xDAeTxUscJspH/qkCihtOC0musk20Z52YqnJ7+IA3/59IjP2Mlk7hxQ2OYv2yOla06TUaccWu07rRM6kjNd874UazBTCxB+Vhac1FRyG+YiStF5BliOJL3b59eUMpl3YHgX5t3mqHe3TDaqZpohWjed+bODqzgtdK+tOuzTLUOwwK2HzsDh7hogXrWl+bMVd9LH/rmPMeEaT37fS8Vlr6vk+5+NnB+4cW0sHhKu67tC1risoVU9ioFAfmsiu5K8QlFv94mPH4nqgmtZREynb38iwJpEuIgezb2aIJpmT98cJFzb2OqJHKBaICWQuCGhmE61yhcQwcgD6kTMNc4Io69bTvrcYP94igPpLXrnsx4hyNbIRMNALKvgMIN1jf+maEuF5Cy5/2GVRAOihu3bXDNpQhkJVWamcikigvXc3pW3f6/Lp7sDPn1Yo9l6qAhdTSGWT7RyHqtWvFbAyNtgEwTCMUEPpFaUigTgmYYtT+77xguM4QSblOKzhxUtJ3qR3fp6u+qNoEXA/Tq56yIu6nIFizmC1jq6F1MS4TGhGZBNnTKYVUKuXFSvRwklDb0nBxrHcnA9ZpS43Jk685x/2Plv2igExFAQV9DOAKGECzlE9tkmIWxrX01j9 uTEeiz0i z+1vH6inIrPc1FoNgsW4ZXbJg4ipogE9mstVUki8GGu6krl6mXwaY11swry+LfZdd/HUdeyunByB3jGjQwuvWc4DuPESBnusaNbWrVAzKiWuJ5n9yNKEac9nqdh/T2oSI9XJj1qBRT8PPYv3OxOqTWPe6BXD552imEPmcis/luyhXlQ4g82zbjE0ufB6H59XFuEOoerxZt4TXE6/uYOFZ6K8+a2aKt6tWzLBV8UhBc5w+NAyj4BmjYXinqnLU6AGvQcosqokWSUEb/VNeYqaOXu975fKOVObkFDy6dHXvD3333u8my653jwlxbd9qE7PZP0XLIrQY91dLZk2KpAFiVuOjho4r+ms5vCc3aHNtGILL4FaPhQ1FZJlm1w== 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, Apr 25, 2025 at 11:40:00AM +0100, Lorenzo Stoakes wrote: > On Thu, Apr 24, 2025 at 08:15:26PM -0700, Kees Cook wrote: > > > > > > On April 24, 2025 2:15:27 PM PDT, Lorenzo Stoakes wrote: > > >+static void vm_area_init_from(const struct vm_area_struct *src, > > >+ struct vm_area_struct *dest) > > >+{ > > >+ dest->vm_mm = src->vm_mm; > > >+ dest->vm_ops = src->vm_ops; > > >+ dest->vm_start = src->vm_start; > > >+ dest->vm_end = src->vm_end; > > >+ dest->anon_vma = src->anon_vma; > > >+ dest->vm_pgoff = src->vm_pgoff; > > >+ dest->vm_file = src->vm_file; > > >+ dest->vm_private_data = src->vm_private_data; > > >+ vm_flags_init(dest, src->vm_flags); > > >+ memcpy(&dest->vm_page_prot, &src->vm_page_prot, > > >+ sizeof(dest->vm_page_prot)); > > >+ /* > > >+ * src->shared.rb may be modified concurrently when called from > > >+ * dup_mmap(), but the clone will reinitialize it. > > >+ */ > > >+ data_race(memcpy(&dest->shared, &src->shared, sizeof(dest->shared))); > > >+ memcpy(&dest->vm_userfaultfd_ctx, &src->vm_userfaultfd_ctx, > > >+ sizeof(dest->vm_userfaultfd_ctx)); > > >+#ifdef CONFIG_ANON_VMA_NAME > > >+ dest->anon_name = src->anon_name; > > >+#endif > > >+#ifdef CONFIG_SWAP > > >+ memcpy(&dest->swap_readahead_info, &src->swap_readahead_info, > > >+ sizeof(dest->swap_readahead_info)); > > >+#endif > > >+#ifdef CONFIG_NUMA > > >+ dest->vm_policy = src->vm_policy; > > >+#endif > > >+} > > > > I know you're doing a big cut/paste here, but why in the world is this function written this way? Why not just: > > > > *dest = *src; > > > > And then do any one-off cleanups? > > Yup I find it odd, and error prone to be honest. We'll end up with uninitialised > state for some fields if we miss them here, seems unwise... > > Presumably for performance? > > This is, as you say, me simply propagating what exists, but I do wonder. There's a particular advantage here: KMSAN will light up in all sorts of ways if you forget to copy something explicitly, instead of silently working but also possibly being silently broken. Anyway, it came from here: https://lore.kernel.org/all/CAJuCfpFO3Hj+7f10e0Pnvf0U7-dHeYgvjK+4AFD8V=kmG4JA=w@mail.gmail.com/ -- Pedro