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 36C24C36014 for ; Fri, 4 Apr 2025 15:44:45 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 9C0BB280006; Fri, 4 Apr 2025 11:44:43 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 97128280001; Fri, 4 Apr 2025 11:44:43 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 81D90280006; Fri, 4 Apr 2025 11:44:43 -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 5EB3C280001 for ; Fri, 4 Apr 2025 11:44:43 -0400 (EDT) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id E97EEB762E for ; Fri, 4 Apr 2025 15:44:43 +0000 (UTC) X-FDA: 83296784046.18.5EB8F4A Received: from smtp-fw-9102.amazon.com (smtp-fw-9102.amazon.com [207.171.184.29]) by imf29.hostedemail.com (Postfix) with ESMTP id D276712000B for ; Fri, 4 Apr 2025 15:44:41 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=pass header.d=amazon.com header.s=amazon201209 header.b=bgpufSt6; spf=pass (imf29.hostedemail.com: domain of "prvs=182d669d3=kalyazin@amazon.co.uk" designates 207.171.184.29 as permitted sender) smtp.mailfrom="prvs=182d669d3=kalyazin@amazon.co.uk"; dmarc=pass (policy=quarantine) header.from=amazon.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1743781482; 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=wZsvbmbu/0jS7xgl288uAUsGSomu15ez6E6onuR11lQ=; b=XR52BgVCHmpRZOJOSXGuLrXD9qxQWKQFLrmwk6DiablkCjGxeCvNsNylaCsNnT/NjmbDwC +4s0yL/oAqq7XV/Y4/XSNjRYKck6YCSL5VlZUGCvi07txhWFmQ+wz8RUkDCp1WXw5wghwR LjLvJ0E388YqVicgqRBAyhrTTijzO8s= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=pass header.d=amazon.com header.s=amazon201209 header.b=bgpufSt6; spf=pass (imf29.hostedemail.com: domain of "prvs=182d669d3=kalyazin@amazon.co.uk" designates 207.171.184.29 as permitted sender) smtp.mailfrom="prvs=182d669d3=kalyazin@amazon.co.uk"; dmarc=pass (policy=quarantine) header.from=amazon.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1743781482; a=rsa-sha256; cv=none; b=vtc1t5MtTBS0BxZ939u7kZcKir7gSotk1Q72UnEb/qfteLR+TuiMHYn614F1GWlCP8vdWG FdUGTXROtKYCqeqRR0+V2kkW3pPmLLbORifYCgQqyKserVWsMqQhJ5jUVJq3OBXEYENotw D7mFRMY3bzZ69R57MVAqLZYtRDRM8uE= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1743781482; x=1775317482; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=wZsvbmbu/0jS7xgl288uAUsGSomu15ez6E6onuR11lQ=; b=bgpufSt6q6igmfaTxmFvHLNn8F7JwjipWO4L0STPrbBk79RBHZwYxY4R TWMW9JlKxgv11gQbfeW5Q0SZ3yOvCtRqOe1meuikUwKBaHjsDWS6/Y5Sp ySxhoJPBmj20j8MgUM7nSOsJqJ42EFvNKMMgVcdrdtoX/ww3OvgTYLSGt 8=; X-IronPort-AV: E=Sophos;i="6.15,188,1739836800"; d="scan'208";a="508886507" Received: from pdx4-co-svc-p1-lb2-vlan3.amazon.com (HELO smtpout.prod.us-west-2.prod.farcaster.email.amazon.dev) ([10.25.36.214]) by smtp-border-fw-9102.sea19.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Apr 2025 15:44:36 +0000 Received: from EX19MTAUWA001.ant.amazon.com [10.0.38.20:55309] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.51.140:2525] with esmtp (Farcaster) id 2332ab5f-8f03-4ed5-a407-5ac2d770b39b; Fri, 4 Apr 2025 15:44:35 +0000 (UTC) X-Farcaster-Flow-ID: 2332ab5f-8f03-4ed5-a407-5ac2d770b39b Received: from EX19D020UWC003.ant.amazon.com (10.13.138.187) by EX19MTAUWA001.ant.amazon.com (10.250.64.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.1544.14; Fri, 4 Apr 2025 15:44:34 +0000 Received: from EX19MTAUWC002.ant.amazon.com (10.250.64.143) by EX19D020UWC003.ant.amazon.com (10.13.138.187) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.1544.14; Fri, 4 Apr 2025 15:44:33 +0000 Received: from email-imr-corp-prod-iad-all-1b-3ae3de11.us-east-1.amazon.com (10.25.36.210) by mail-relay.amazon.com (10.250.64.149) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.1544.14 via Frontend Transport; Fri, 4 Apr 2025 15:44:33 +0000 Received: from dev-dsk-kalyazin-1a-a12e27e2.eu-west-1.amazon.com (dev-dsk-kalyazin-1a-a12e27e2.eu-west-1.amazon.com [172.19.103.116]) by email-imr-corp-prod-iad-all-1b-3ae3de11.us-east-1.amazon.com (Postfix) with ESMTPS id 3EB8EA02DE; Fri, 4 Apr 2025 15:44:31 +0000 (UTC) From: Nikita Kalyazin To: , , , , , , CC: , , , , , , , , , , , , , , , , , , , Subject: [PATCH v3 3/6] mm: userfaultfd: use can_userfault vma operation Date: Fri, 4 Apr 2025 15:43:49 +0000 Message-ID: <20250404154352.23078-4-kalyazin@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250404154352.23078-1-kalyazin@amazon.com> References: <20250404154352.23078-1-kalyazin@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain X-Rspam-User: X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: D276712000B X-Stat-Signature: bfoss97bwpj9j63quscm9wooqbx7icb9 X-HE-Tag: 1743781481-268373 X-HE-Meta: U2FsdGVkX19cwDxTUFZayEZpspdu+gLtgulL7XYfe8fCx5ZuDPe24jGbmU+o2um2J4FstQ0+X8lAhpjMISra3YUamxxhvtTGcjhL8y7vwjfvcK+djVsdEPaivHSf0A225rtYKt/HACGRpfmQc+uKK8MbrEPMNWeQhjMq5vAb+qe7rqAyc8F3vrkKCVDcoh9imySSFbyTBjT3hNjJxLuR2CQxbOOC5j4CeZkh2JxbpYeHGvxg+zKgr7A57/GL9U2a4LXyGF+wJJMJG3BXA/Vzm5h0KoTytipaKhuftvau7+kpeZLP2+8c7U7x/C7DwhVHYJgPenFmOT8Q6jwqnsRGyMDtXqdImobVa40I9wCuWq13vLRulHe/Yae2u7FyxfVgudry7TcTtfJ2Yr/Vej7rUQynLtYNVtQtF6uBDFbY0stYRVAoDNJ26kheSiczgQHg1t5JvxmP00tZLSz6CLqwKRC4NmQQNjIJELPW23XZzuTHIljEoejxfWTgJkUt8bWwhcinemG534BaRzEKFPoDGZU1rMM+tagsX3D0lQjyME0ySF4oDecF2D9vuf5MAYH1sYDuFiy+0acqqD218r5R+pcBut1uCJYq+vg8VE98wGHd/rKdOGPc4ovP0XRUY4R+ogqYOMcB+TwUmSNGMh4uQC1zGIiszeAVeCdvpMEBgnvIzNbWA3L0GAObfd0+WH/X7ixCcYL5b6g78H247O1XarTfZknuWGJ3l76smUUM8G+lvsW9TWzDE2Pqx2+fCV6gwgZPh7i+k3MHAC0ayI43GADrAzqBcxhQiQ/tOUxv60Sz3VdDNul16AOKgfGQVslY5SLwdHp5fXLCeE623DUrp1Iyfg4RBg1amcQilQ/d2SaoBd8aVj/o5HFv8V6Nkl9V4tGaJ3iy3HkelNEDl2jMEOy/9nIeTTU6CyDO+pyzS8kLnpwtVXOuLp4OwqnlBrVWxnsqxKF/T+ej72EuK62 9ffHW4NU 1Kga6g6M/qV7Ts29/9UWSNpdEKr8Mv3r7l8wM1XR4rfi+wJRg07b4v9JhM/027FYV4P+qKBdXOYxC74Kr7ti0XZE6guhtbWbtEM//FvILMKNVaFTCDi/em8Ec48M1hoo7Uocui8b0UvK0h2aEmnn2fMW+tSuGLcj/8d/iXellhwjg3XX46yqWv171iSCcEhcom1wtZ7Cr5/gMQmiqWqCkyEyTwf/Sj2uUEWnEzYW8UVTcaUKskxEFQwcvR+perQjhhjtIM4KVY6QmqcNTT882CGV7XS63oGr1ianILmWWRoygRawSiOTGCDKki2+bjQtLSoNKL0G4n4pxWuVytSc3ByDZvqEvp2iYcYEY2qqb1i08Zef/bDiDA2d7WahpFDkfFiOYm5s6UUxlLaEV61rd92P+ieU5qIDqljaGh5aZJTxZ+OpEzzTw9Ywt4BTNwb5X1tk5bBQhtP8bmfjhf+Ds9ywmsQplAMlPUWPMEYStN0IxoAvtIVNN+qfYhvzAesmfNK1/mRW6kDbbV9bIZ1toziHqQeDZAIG95RXCPy3eG/KvWLc= 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: Signed-off-by: Nikita Kalyazin --- include/linux/userfaultfd_k.h | 13 ++++++------- mm/userfaultfd.c | 10 +++++++--- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/include/linux/userfaultfd_k.h b/include/linux/userfaultfd_k.h index 75342022d144..64551e8a55fb 100644 --- a/include/linux/userfaultfd_k.h +++ b/include/linux/userfaultfd_k.h @@ -221,8 +221,8 @@ static inline bool vma_can_userfault(struct vm_area_struct *vma, if (vm_flags & VM_DROPPABLE) return false; - if ((vm_flags & VM_UFFD_MINOR) && - (!is_vm_hugetlb_page(vma) && !vma_is_shmem(vma))) + if (!vma->vm_ops->can_userfault || + !vma->vm_ops->can_userfault(vma, VM_UFFD_MINOR)) return false; /* @@ -235,16 +235,15 @@ static inline bool vma_can_userfault(struct vm_area_struct *vma, #ifndef CONFIG_PTE_MARKER_UFFD_WP /* * If user requested uffd-wp but not enabled pte markers for - * uffd-wp, then shmem & hugetlbfs are not supported but only - * anonymous. + * uffd-wp, then only anonymous is supported. */ if ((vm_flags & VM_UFFD_WP) && !vma_is_anonymous(vma)) return false; #endif - /* By default, allow any of anon|shmem|hugetlb */ - return vma_is_anonymous(vma) || is_vm_hugetlb_page(vma) || - vma_is_shmem(vma); + return vma_is_anonymous(vma) || + (vma->vm_ops->can_userfault && + vma->vm_ops->can_userfault(vma, vm_flags)); } static inline bool vma_has_uffd_without_event_remap(struct vm_area_struct *vma) diff --git a/mm/userfaultfd.c b/mm/userfaultfd.c index 4b3dbc7dac64..0aa82c968e16 100644 --- a/mm/userfaultfd.c +++ b/mm/userfaultfd.c @@ -728,6 +728,7 @@ static __always_inline ssize_t mfill_atomic(struct userfaultfd_ctx *ctx, unsigned long src_addr, dst_addr; long copied; struct folio *folio; + bool can_userfault; /* * Sanitize the command parameters: @@ -787,10 +788,13 @@ static __always_inline ssize_t mfill_atomic(struct userfaultfd_ctx *ctx, return mfill_atomic_hugetlb(ctx, dst_vma, dst_start, src_start, len, flags); - if (!vma_is_anonymous(dst_vma) && !vma_is_shmem(dst_vma)) + can_userfault = dst_vma->vm_ops->can_userfault && + dst_vma->vm_ops->can_userfault(dst_vma, __VM_UFFD_FLAGS); + + if (!vma_is_anonymous(dst_vma) && !can_userfault) goto out_unlock; - if (!vma_is_shmem(dst_vma) && - uffd_flags_mode_is(flags, MFILL_ATOMIC_CONTINUE)) + + if (!can_userfault && uffd_flags_mode_is(flags, MFILL_ATOMIC_CONTINUE)) goto out_unlock; while (src_addr < src_start + len) { -- 2.47.1