From patchwork Fri Jul 7 21:55:37 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Axel Rasmussen X-Patchwork-Id: 13305362 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 79C23EB64D9 for ; Fri, 7 Jul 2023 21:55:57 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E05476B0075; Fri, 7 Jul 2023 17:55:55 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id DDFE38D0005; Fri, 7 Jul 2023 17:55:55 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B45B76B007B; Fri, 7 Jul 2023 17:55:55 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id A72EF6B0075 for ; Fri, 7 Jul 2023 17:55:55 -0400 (EDT) Received: from smtpin15.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 7BD0AC013C for ; Fri, 7 Jul 2023 21:55:55 +0000 (UTC) X-FDA: 80986173870.15.D69F54E Received: from mail-yb1-f201.google.com (mail-yb1-f201.google.com [209.85.219.201]) by imf27.hostedemail.com (Postfix) with ESMTP id 9F6CB4000B for ; Fri, 7 Jul 2023 21:55:53 +0000 (UTC) Authentication-Results: imf27.hostedemail.com; dkim=pass header.d=google.com header.s=20221208 header.b=u4eWVZhz; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf27.hostedemail.com: domain of 36ImoZA0KCMkpCt06p71977t2v33v0t.r310x29C-11zAprz.36v@flex--axelrasmussen.bounces.google.com designates 209.85.219.201 as permitted sender) smtp.mailfrom=36ImoZA0KCMkpCt06p71977t2v33v0t.r310x29C-11zAprz.36v@flex--axelrasmussen.bounces.google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1688766953; 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=OLsbot8A3mLzPOTacWgWQym2WdRGSP5CUekvmW42V6U=; b=c9xF0+0kFPbRzc7/yeNelSimqdGR4fu3FpwOhjlVVoFDtamxUwCydsN0mROrFcHDIGn+oK DR96wq263rFwqHGj7Nvc7JoW+f1sBKgcpUTnG3as3QKvA7fn2NhZSXv4KiUUUbYB6tHRhs HLHQ+rbi2x35VGAOCgN7GCeVKKrzR4g= ARC-Authentication-Results: i=1; imf27.hostedemail.com; dkim=pass header.d=google.com header.s=20221208 header.b=u4eWVZhz; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf27.hostedemail.com: domain of 36ImoZA0KCMkpCt06p71977t2v33v0t.r310x29C-11zAprz.36v@flex--axelrasmussen.bounces.google.com designates 209.85.219.201 as permitted sender) smtp.mailfrom=36ImoZA0KCMkpCt06p71977t2v33v0t.r310x29C-11zAprz.36v@flex--axelrasmussen.bounces.google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1688766953; a=rsa-sha256; cv=none; b=zia2xpZ1Ay4WrRk7VfWEOxqV9B7BKZeXRIGLxj+f1axi5G0pUsqmZc8Hw10K6In7lX6DYl GjaCSgxELyc15z04c9fM8ssP839DKlCx1kEOF5KzOdHA+KqpTSLFzS0pEd61r8bk8j9yCi VKf6BqgYlIgRTzNRsPPoNjtD5jzbePs= Received: by mail-yb1-f201.google.com with SMTP id 3f1490d57ef6-bacd408046cso2452106276.3 for ; Fri, 07 Jul 2023 14:55:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1688766953; x=1691358953; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=OLsbot8A3mLzPOTacWgWQym2WdRGSP5CUekvmW42V6U=; b=u4eWVZhzXkhr8wDK2s+0iTmAY7l1h7R8MMREKtd6LAlEQHntgig16nK2DmvVjFtAts msXCG4jhwlQLWJ7mMhcWd94nmZDBm9Cq+zUjd6HljvgRAmkhpgv0xVCKBFZiliIr4ZRU lJ8XlRPYDtAXOgFTgkEbA2VAMupk6A+/nyrhmDIHETRiNLXPxTJkdqTH3PtZeCK+4ys/ yja0ZfMTqDUhv3HkJ7Igyj0pyhydxjC+QDfmIGRe122yVx7v1/1OQSVN86AWXYuftoFV PzsEid3tTnR28UcWxblLYAu3XQZ8xKr3MUXV1i8PoVEZYRxu++znQoGIDktCzSa3JUOO wVnw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1688766953; x=1691358953; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=OLsbot8A3mLzPOTacWgWQym2WdRGSP5CUekvmW42V6U=; b=FnJS3iHsCZoqiZwyPhW43SLd7Zf5aO1rcGoejx5W+bvxpNvVZLQY5LyygnYHK0aGNG EOQhELrb0VjIWUppRnJjhm+aAtcJoxkAiMOSvs19t9SK2SXYpmNnaHcuxK/iH82l6a++ W+4GDjeEsb4dOkP9gdEsX2y8xnCnBhuw7euwH229qkUch7PCRvYSE7O2QZD+a/6mM95x WPFCDCvOcQsQ6hae+gelxEtX5mAZexUmpA8xc1sTfg8X99BUrPIq9qEUdUV018/Zbo+2 Q9idpShbBgZHJwvyHOPrrAp+MtZJ7GpLXQ7SE0ZFMOg+Jf5h5xwFnG4zEFAcjOjT52kP Nb2g== X-Gm-Message-State: ABy/qLYx991NORHXxcDu0usXydX7yHPVuZG8/MdIFs/60Pmab3EHkEzW Fu3x0yElq9ONrszLW6FgCwtBLC8KdaGGq8CFXM8M X-Google-Smtp-Source: APBJJlHL/U0DvDL04upfB3UAQ4yyr3JL0AGmb9MqqDsUkDgEZRrl5NMG/hgdzAz1NMr7770PTdyAART4pZ39J+ilp8hn X-Received: from axel.svl.corp.google.com ([2620:15c:2a3:200:c201:5125:39d1:ef3f]) (user=axelrasmussen job=sendgmr) by 2002:a25:e442:0:b0:bd7:6810:6666 with SMTP id b63-20020a25e442000000b00bd768106666mr33172ybh.5.1688766952790; Fri, 07 Jul 2023 14:55:52 -0700 (PDT) Date: Fri, 7 Jul 2023 14:55:37 -0700 In-Reply-To: <20230707215540.2324998-1-axelrasmussen@google.com> Mime-Version: 1.0 References: <20230707215540.2324998-1-axelrasmussen@google.com> X-Mailer: git-send-email 2.41.0.255.g8b1d071c50-goog Message-ID: <20230707215540.2324998-6-axelrasmussen@google.com> Subject: [PATCH v4 5/8] mm: userfaultfd: support UFFDIO_POISON for hugetlbfs From: Axel Rasmussen To: Alexander Viro , Andrew Morton , Brian Geffon , Christian Brauner , David Hildenbrand , Gaosheng Cui , Huang Ying , Hugh Dickins , James Houghton , "Jan Alexander Steffens (heftig)" , Jiaqi Yan , Jonathan Corbet , Kefeng Wang , "Liam R. Howlett" , Miaohe Lin , Mike Kravetz , "Mike Rapoport (IBM)" , Muchun Song , Nadav Amit , Naoya Horiguchi , Peter Xu , Ryan Roberts , Shuah Khan , Suleiman Souhlal , Suren Baghdasaryan , "T.J. Alumbaugh" , Yu Zhao , ZhangPeng Cc: linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, linux-kselftest@vger.kernel.org, Axel Rasmussen X-Rspam-User: X-Stat-Signature: 361oazatsxsgsnycjp8nqqioj4dky9ph X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 9F6CB4000B X-HE-Tag: 1688766953-701380 X-HE-Meta: U2FsdGVkX1+nx/54sPdvEYLUdCrrbCNRrryK57UYAOkRZnFgstuY6ca/H3yKK/I2aTPpY0NxZUIR6efuF2hDgPGMpW4oCh+6YpRVUqJtiB4ZXcXuJ0LZIjBaDt44241temcucgvBd9vQ0EHfseQ7sjGTUDp25hq3xo5w8nmASIhxtpnePrbq8vkmf9EEtB8vusAvP42TwFio8el87E/tfdIC9AZDb4j0t26ESHc3ghsV4+rihaVO97nrkwkRCfhvwEt0jAhrlQ1SUknMz0V179LJ/lxkZ2+LKAvpWZdGyvCpUyxaYwCeWg/wCA8kp4NWuEoFYEdTgoYO4lqCRWVeH7x3kt9KVGQFLh7ywSJuPQ0y/KuWkv7I94Dbg7AOcV6qMXn/46xwp2qqRpviXkJbxauj0lP1ZpFXJAUUGEjqa2tUsusZYIN/c1i+urVCNM/v6f64iU2cmIyghhTi8CCLZxd0E3V3AfEGitt3M7+byNOVl6m3lYH8sb+J6BWM8amuJOUDreJSQlh66VIQRufWnVq30zXbIe3ldMvF07goaN5YoDzL4gKNYFL6ZVxntpHfNuQgyoBy9Ug7X8lep0AC/ckMxE8d8tKE2XLiHDnEOTc2JYq/AN1tp9IjDTbd+l3sXiXgMOU2EL0x+7L/RvNIJLestIKk8FSPPD0Bu3CZQhz3zapxlZ2hZd8INTsOQeHSuT7lK9Vq4MWOxTclgpYhCsHzYarYJel71QdgjfVMkBESlP0PnApD7e3II7SmZPvxwCI8Krhm2K0akgVl84iKX8ge1tFWgylyc7LPBptMbQFysmId+QPsw5vNbwc+Un5qC8VV2Cq+0v/GntYLzud5vXASyf97/QWdUvPSnn/wuYcCZFvRrrVTEV/L+lWCSeTrd0WUF4FgclwHl33f+YCNmNUJ4PQFOdcGR4wEozD2uMVIFbVrREusWE4LfmfL/H+Uaej0fs+GA10Fg+J4ZyS 4tSepRkO WZWSjUsA7GU1CzFPdKkEcxFZ8Ree9IftALjwe0mCRkSKj8TkN3ruEWE5baCL75idE4bo6gnJnCx3cZ067MozOD9fL41AE6rsEh/xukObNZkQ2UXuQHcaZjJCP2q6r8wyIYWmo3oqihwm4AR5hejFxPIJPZNHgRTDyyRyTbi2tNyiev7HUn+9yafaUhuuRwTeJeXfZTp0Otkpq41p8fYhTLGlGOJ+JGQ6UG9KQ3PHxJzybsN+AEW7AnetKwHOTmeBEz+p5tncOFWAMqFETZA2DZtRELN6PphTxMegxmQGj1L2mv4XPK4e3IEgN9sFR2iCVxxeMCJ7zPF18tcsBK8aB12sZ+Esty8EHgXyS1wgqzKaf210gQWqPl9+j77uak0wEX2MLxPNBQwqnczokBAfF/OCZ97d8nf6gZYZyNgt38FqNklZKP2NFe6kSaDWXtW3saWMOurUeHKK23ogB7apzfc+Njt/v6cAONR00wP3WLkLJWHxe0OS48MzY12hFUZhCxvnJFNYWcra6dlWKS1NRsoNwHA/JMyosnUU7DfMm856yztAoDlFrJEhBaHOBQmB6XTETKeQYJq1t9aCxNF2mtOdNsQ5lf1o9CZk/OmevARIXIZlFvQrTaFIiSJ3GFif9SxE4BCKM2ij2T+psvk48eo4VNMhyla/VyTvl/Lahhnrvaxg8XfZqGvkGWCNfcYyZ6QXdqNA94PAp/cNdyFLGE45+AFJh4eDSRk3b7Rr5BJvLRNg= 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: The behavior here is the same as it is for anon/shmem. This is done separately because hugetlb pte marker handling is a bit different. Acked-by: Peter Xu Signed-off-by: Axel Rasmussen --- mm/hugetlb.c | 19 +++++++++++++++++++ mm/userfaultfd.c | 3 +-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/mm/hugetlb.c b/mm/hugetlb.c index 66225b21c64e..8789101de88f 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -6263,6 +6263,25 @@ int hugetlb_mfill_atomic_pte(pte_t *dst_pte, int writable; bool folio_in_pagecache = false; + if (uffd_flags_mode_is(flags, MFILL_ATOMIC_POISON)) { + ptl = huge_pte_lock(h, dst_mm, dst_pte); + + /* Don't overwrite any existing PTEs (even markers) */ + if (!huge_pte_none(huge_ptep_get(dst_pte))) { + spin_unlock(ptl); + return -EEXIST; + } + + _dst_pte = make_pte_marker(PTE_MARKER_POISONED); + set_huge_pte_at(dst_mm, dst_addr, dst_pte, _dst_pte); + + /* No need to invalidate - it was non-present before */ + update_mmu_cache(dst_vma, dst_addr, dst_pte); + + spin_unlock(ptl); + return 0; + } + if (is_continue) { ret = -EFAULT; folio = filemap_lock_folio(mapping, idx); diff --git a/mm/userfaultfd.c b/mm/userfaultfd.c index 68157359dc34..eaa59fb81719 100644 --- a/mm/userfaultfd.c +++ b/mm/userfaultfd.c @@ -373,8 +373,7 @@ static __always_inline ssize_t mfill_atomic_hugetlb( * by THP. Since we can not reliably insert a zero page, this * feature is not supported. */ - if (uffd_flags_mode_is(flags, MFILL_ATOMIC_ZEROPAGE) || - uffd_flags_mode_is(flags, MFILL_ATOMIC_POISON)) { + if (uffd_flags_mode_is(flags, MFILL_ATOMIC_ZEROPAGE)) { mmap_read_unlock(dst_mm); return -EINVAL; }