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 40358CD4F5B for ; Thu, 5 Sep 2024 08:14:18 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id CC70E6B010B; Thu, 5 Sep 2024 04:14:17 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id C77516B010C; Thu, 5 Sep 2024 04:14:17 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B183C6B039F; Thu, 5 Sep 2024 04:14:17 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 904246B010B for ; Thu, 5 Sep 2024 04:14:17 -0400 (EDT) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 397B241AB0 for ; Thu, 5 Sep 2024 08:14:17 +0000 (UTC) X-FDA: 82529972154.14.E23F1BF Received: from mail-qk1-f179.google.com (mail-qk1-f179.google.com [209.85.222.179]) by imf25.hostedemail.com (Postfix) with ESMTP id 6DA69A0019 for ; Thu, 5 Sep 2024 08:14:15 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=Y3Up6bh1; spf=pass (imf25.hostedemail.com: domain of amir73il@gmail.com designates 209.85.222.179 as permitted sender) smtp.mailfrom=amir73il@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1725524030; 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=GyBCK9InRyMt0WInCHwzobA7WWqSCgMtXck53xCZvD4=; b=w4/BL7ZSRGnW7f/oeUGlJZUWgUJcZOfcmQVof7RCQKUXHFkVWU1sxcA6WvaEjousPNSTjc hbdAxkODmRVtasECyWakYvEJVZv5Yg/gxz8yzVMIroeyAoAk0SVOb5wIqxIiYKinp7MNv+ MIwbWO9rvHWaPcRv48bVUd7x5RW4yf4= ARC-Authentication-Results: i=1; imf25.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=Y3Up6bh1; spf=pass (imf25.hostedemail.com: domain of amir73il@gmail.com designates 209.85.222.179 as permitted sender) smtp.mailfrom=amir73il@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1725524030; a=rsa-sha256; cv=none; b=NbP+E4UTbvIud3RnETrmtqQVGKV1QOgdUVlewsgzy4566/CHL8HTUb2IB5+nJg2VjUR4My ekNZB6GDyci4uFpY1oLqOYhcMhTh8yBatvZWtHMxXW6ryG7NTpK6WsVi9jjLStyqJnimGf 0dCMv7j0rls2s0yZZscCI1yzhLOBFjM= Received: by mail-qk1-f179.google.com with SMTP id af79cd13be357-7a8125458e4so30321285a.3 for ; Thu, 05 Sep 2024 01:14:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1725524054; x=1726128854; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=GyBCK9InRyMt0WInCHwzobA7WWqSCgMtXck53xCZvD4=; b=Y3Up6bh1C7IB18enq2te2kxSNJHseHT98zP1sSAX5qxpMFc62+qW2QehR9u9RdX7w4 aHpyrSa4YdIxw7C5RGG4N4MBvR4HfSxr6VOeAXuNjZSVvTHPeBya0itFHuPToNlETMgJ XaSaDpiKI08ujp5ZQt5NgidLwXq/+CeC842WYV0RM8nLWars6H9TP3LjMELMv2iBI4Ps Es99R+zgTGooYnc+f+CKszcNfzp7g5DxbbUQAu9Q4ANVoZ5ostLk7jTzAUdO7lw3kwH0 UOeuZ4mrq8WaTQwg5nPVyeERwPqapFGXUxVC5EJ6DPDNiqPrX//cP0+NWAT+hyTTvMfG 6DRg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1725524054; x=1726128854; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=GyBCK9InRyMt0WInCHwzobA7WWqSCgMtXck53xCZvD4=; b=Se2mhtHOKY7uzRlbwsgt6EvqTofdTXew6kzJYviImt9lPBlzQcOckAdhR6TKkmEBYu 41GcoVVlVlgp57gBbaJp+mnFLPOx5s0rmBBE4CHrdUAUnNJW103RrAJjkcsUxecLJCET EPeNDKQ+jyfL8eydETt2TluklIE9t3GJmnKev7rk6pTDjnVF3lISda67s1EXbEZFpw35 BMruDWl5g27a6Mq9GEkHoewFLdPhrzokoxj8R9fsQ27N2gRR64SXQR7r8PNyQA+BAew4 OYgxJFqDBnqKLj+xagw01KAGGP9jFQH9waarZ5rAszV2k0t76+xNRoqXedGyquNVRcjj 4+ZQ== X-Forwarded-Encrypted: i=1; AJvYcCUY18Y87ZqkQdV34sqKJq7v0N45IoA9WKi7GiaAcpbErrndt1DzZs/2TDCke/oZVZgwGCkq48oeXg==@kvack.org X-Gm-Message-State: AOJu0Yx/VBiIfvx1JRTEs7Sbnja9U4uJEf6+WV7swWNMvb8nmXKVAVqH zoopBV4yqjOYR6niyl/1QEl3Ns1alayAw5STCa2NFJOJjuTIICuMqFayXHHD6t2VP7XIyrL7E+W JY0UGWvrUCUAnE7Ru2QNt8LFdPOw= X-Google-Smtp-Source: AGHT+IHioFe00Pp0XmEgOtQZaGDRJoBV57MAuA+hhUGAaxnDLKex7wtypkjrpGpwlYIqGtL5aAZry+TjLKdJIPcbpZ8= X-Received: by 2002:a05:620a:190d:b0:79f:78a:f7b4 with SMTP id af79cd13be357-7a902e90175mr1780961985a.42.1725524054468; Thu, 05 Sep 2024 01:14:14 -0700 (PDT) MIME-Version: 1.0 References: <80e7221d9679032c2d5affc317957114e5d77657.1725481503.git.josef@toxicpanda.com> In-Reply-To: <80e7221d9679032c2d5affc317957114e5d77657.1725481503.git.josef@toxicpanda.com> From: Amir Goldstein Date: Thu, 5 Sep 2024 10:14:03 +0200 Message-ID: Subject: Re: [PATCH v5 13/18] mm: don't allow huge faults for files with pre content watches To: Josef Bacik Cc: kernel-team@fb.com, linux-fsdevel@vger.kernel.org, jack@suse.cz, brauner@kernel.org, linux-xfs@vger.kernel.org, linux-bcachefs@vger.kernel.org, linux-btrfs@vger.kernel.org, linux-mm@kvack.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Stat-Signature: ep3watzrbb8te8be4ikm3nfokw3sg1ss X-Rspamd-Queue-Id: 6DA69A0019 X-Rspamd-Server: rspam11 X-HE-Tag: 1725524055-398746 X-HE-Meta: U2FsdGVkX1+qIyYYRIHsQaOxnuKt2ezdgUo3XDu3J163s3CpO1md2wiCOYZ53pOOMjadkdkLP0NeI1LHqNgHRnblOWk7zV2vdrYmfh88IGfAqySWRul8OmuYxNxcX2Y2D4uocdTHqVG13+eRIsExZdR/Phn266oWA64TS07ChHcjXFVPSjEcGIT2h8nrorQ3rP6szdjSpjEDLL7tq/9Yn2MS3RnrJ9sbXLHsF92awESlfCVfQldCTKodjRhYE0JRZRoyOb4i/t/PwUaINp5Fc3bEvRVJ+8ZopLNrZndqvIX6LQjPxASqSoEBIIQijdwY7y2QalFmEKUeIV70uTJwKPmPiaFNn8Bqtp5/HON+2ZsH/VxOwmqL1dZhhWCNiNJajpO9PO3/2kta++gQFvE2xtogJjWUFedFLwM1us/5JxeSHao/bbNO0FzU6vnMXd2rpC4GxLLNURY8DPkLBK7oFTvX+zCbRx38C2rDl22QsLN0B3ywH8K+3v6SlqhxthkRGC3UAj1ZJ1JN/D7EU7Z63lu/pjV6R5LT+oIylirjMh1r6uGd9bAExi9woo2J8JY9q/1cCBiGfXz3NJXcpqA5ba0QK1Zb/9WhNNGO4pQA0bXHXteM/qLP0Gq9CdMxrEyCR3DMEpgwdLdFUMTFkEE4xAmch9RpGwEYXM1StZB4lBCkxtmV1SoaNplwyy+Qvsj8WdeO3Si6ufJcQvewrIL2wDjCFYHorld1+imJ7ItJb3dnNwD8VY/c3s8m/we+Qry+xvVei8NCesEIyU0T9cgUZY9oEByQgQCKQ8XQYXOFJ5eRHPIhDdGm7Us5XqpHjdnH9m1VaaFawWGnLp3CwmVYVFrPZ5jNoSJDwrBUcVNxAw27pv4+w9OJii2+M2D8JNTxBGoMCiBNFfcvod6DVq6x5Jiu245UDuGam687MLpUm2m+J/L9K28/IpugvDDCVI+OtJm9MPya9gRzwvxCOzF jcR69q7e Kf9UTpoBn//OSe9ZvtMqULOMDO/cV/1kNjXMAyfiinubjvNbp76BORRWomT8K+vTweXYa7hWg6/JRUs3yENbDDXMtPRyauBE8SPAlSU3byNV5ODFykj244pexo4ns6IUazkgCVdpomY9ITR7FEHVVcMzavn92kazvcXVRrDTnzbcx0Jo+sX6b/vqiKlvy1LtMmUKkPZPij/2b6KF9y7TJj0T64QxRA0pqUg52lqIA517CWwS6SjCdOuag4ebXUh8FEAU2CeqMeD+iXd+cf+K6BzAMk5GUilqoK7tnnr9HonPcKwYz/r1piOJR9uKp1eRCHRHHJCndlohSEFMDGayfQttmQ1033f9FpCi9mJwPvePIiKJvCkdKtngiYNVF8lsED3Lt99395BcqXSx1bdgLZ26Wq/QzbK3tP5L6xB3LjWu5+by7hXhUXCxeeQ== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000681, 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 Wed, Sep 4, 2024 at 10:29=E2=80=AFPM Josef Bacik = wrote: > > There's nothing stopping us from supporting this, we could simply pass > the order into the helper and emit the proper length. However currently > there's no tests to validate this works properly, so disable it until > there's a desire to support this along with the appropriate tests. > > Reviewed-by: Christian Brauner > Signed-off-by: Josef Bacik Reviewed-by: Amir Goldstein Thanks, Amir. > --- > mm/memory.c | 22 ++++++++++++++++++++++ > 1 file changed, 22 insertions(+) > > diff --git a/mm/memory.c b/mm/memory.c > index d10e616d7389..3010bcc5e4f9 100644 > --- a/mm/memory.c > +++ b/mm/memory.c > @@ -78,6 +78,7 @@ > #include > #include > #include > +#include > > #include > > @@ -5252,8 +5253,17 @@ static vm_fault_t do_numa_page(struct vm_fault *vm= f) > static inline vm_fault_t create_huge_pmd(struct vm_fault *vmf) > { > struct vm_area_struct *vma =3D vmf->vma; > + struct file *file =3D vma->vm_file; > if (vma_is_anonymous(vma)) > return do_huge_pmd_anonymous_page(vmf); > + /* > + * Currently we just emit PAGE_SIZE for our fault events, so don'= t allow > + * a huge fault if we have a pre content watch on this file. Thi= s would > + * be trivial to support, but there would need to be tests to ens= ure > + * this works properly and those don't exist currently. > + */ > + if (file && fsnotify_file_has_pre_content_watches(file)) > + return VM_FAULT_FALLBACK; > if (vma->vm_ops->huge_fault) > return vma->vm_ops->huge_fault(vmf, PMD_ORDER); > return VM_FAULT_FALLBACK; > @@ -5263,6 +5273,7 @@ static inline vm_fault_t create_huge_pmd(struct vm_= fault *vmf) > static inline vm_fault_t wp_huge_pmd(struct vm_fault *vmf) > { > struct vm_area_struct *vma =3D vmf->vma; > + struct file *file =3D vma->vm_file; > const bool unshare =3D vmf->flags & FAULT_FLAG_UNSHARE; > vm_fault_t ret; > > @@ -5277,6 +5288,9 @@ static inline vm_fault_t wp_huge_pmd(struct vm_faul= t *vmf) > } > > if (vma->vm_flags & (VM_SHARED | VM_MAYSHARE)) { > + /* See comment in create_huge_pmd. */ > + if (file && fsnotify_file_has_pre_content_watches(file)) > + goto split; > if (vma->vm_ops->huge_fault) { > ret =3D vma->vm_ops->huge_fault(vmf, PMD_ORDER); > if (!(ret & VM_FAULT_FALLBACK)) > @@ -5296,9 +5310,13 @@ static vm_fault_t create_huge_pud(struct vm_fault = *vmf) > #if defined(CONFIG_TRANSPARENT_HUGEPAGE) && \ > defined(CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD) > struct vm_area_struct *vma =3D vmf->vma; > + struct file *file =3D vma->vm_file; > /* No support for anonymous transparent PUD pages yet */ > if (vma_is_anonymous(vma)) > return VM_FAULT_FALLBACK; > + /* See comment in create_huge_pmd. */ > + if (file && fsnotify_file_has_pre_content_watches(file)) > + return VM_FAULT_FALLBACK; > if (vma->vm_ops->huge_fault) > return vma->vm_ops->huge_fault(vmf, PUD_ORDER); > #endif /* CONFIG_TRANSPARENT_HUGEPAGE */ > @@ -5310,12 +5328,16 @@ static vm_fault_t wp_huge_pud(struct vm_fault *vm= f, pud_t orig_pud) > #if defined(CONFIG_TRANSPARENT_HUGEPAGE) && \ > defined(CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD) > struct vm_area_struct *vma =3D vmf->vma; > + struct file *file =3D vma->vm_file; > vm_fault_t ret; > > /* No support for anonymous transparent PUD pages yet */ > if (vma_is_anonymous(vma)) > goto split; > if (vma->vm_flags & (VM_SHARED | VM_MAYSHARE)) { > + /* See comment in create_huge_pmd. */ > + if (file && fsnotify_file_has_pre_content_watches(file)) > + goto split; > if (vma->vm_ops->huge_fault) { > ret =3D vma->vm_ops->huge_fault(vmf, PUD_ORDER); > if (!(ret & VM_FAULT_FALLBACK)) > -- > 2.43.0 >