Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp32499437rwd; Fri, 7 Jul 2023 15:18:04 -0700 (PDT) X-Google-Smtp-Source: APBJJlE8cmO5eu4wo8tKbSthNtflU/rNVhi+VB5n6CBtDtG1Mpn7WI92Sk1oTKc6sW48x8ZKs5Eu X-Received: by 2002:a17:906:15b:b0:98d:e139:1ca with SMTP id 27-20020a170906015b00b0098de13901camr5140327ejh.27.1688768283862; Fri, 07 Jul 2023 15:18:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1688768283; cv=none; d=google.com; s=arc-20160816; b=rKyDODSYZWbHBbYY2PUMqGSgfRlr0a9moY9ID/WiSjzU+DP5A1J4Z+qmxJd9nwCTLX XU+WouS6rw3EzRsDqADKQ/s65ASbWE4Ybb6Du8+sOlDczVCEpY0X2Q4DZ5LLoX31kJqt XU487KJyB2WdNvJJG5VVJ4ex4+xrZSoR6ByCDeR1ce2+yL3Q4Qr0hZaX8850cu2Acfxg 8d2wotfTzGALI2/zWsNUC7TCPkf3EYjH7KXVn3aQARsvXSbs5Eq4L/RN2mTjMwShKHF5 H7q4levmWTy5L66mygXvv2u4iYk5kepcUn5Z1HIst8RpJKR6uHRzZF9vXKcQtenG7ClM l+cw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:dkim-signature; bh=OLsbot8A3mLzPOTacWgWQym2WdRGSP5CUekvmW42V6U=; fh=Opjbx899L+35XA6SNQJRoMm3wFpvelEj3IooMxkZLjI=; b=OvlvrtSMYdXjPSoVf1MHZbOJFzna5R3qvOr7D/QfzuFAFpl0SuN1khxEdH3oVYhpOo FsZ5iIAyw16aE/0aM2pO52caxyonucoyYZvTokE6DCxExA/ukVCst2dfMcKx9knu3oB8 +VGBAZ4bLywNVsjTPcDgYQpkg+PxjORcHiL1PVgF27Qni5SEvXJyOnLbxdn1Oyk7tLTW wd+Y9yfaKa3ZX8rBKacsPuFTV5K0B+GEC9xyHQb0vT6XMwGHUK5ROSKQlkXnECEc+IhV pFAE5hbrxi6oUczUNwtdw4SOuFqU6F6hPe7IW3iayBGsxu3BcaOKv+dlAHeVNlzK0DNV NOFQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20221208 header.b=u4eWVZhz; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id p25-20020a1709060e9900b0099318060d40si2647809ejf.459.2023.07.07.15.17.40; Fri, 07 Jul 2023 15:18:03 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20221208 header.b=u4eWVZhz; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232905AbjGGV4X (ORCPT + 99 others); Fri, 7 Jul 2023 17:56:23 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44090 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232505AbjGGV4C (ORCPT ); Fri, 7 Jul 2023 17:56:02 -0400 Received: from mail-yb1-xb4a.google.com (mail-yb1-xb4a.google.com [IPv6:2607:f8b0:4864:20::b4a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 899E82128 for ; Fri, 7 Jul 2023 14:55:53 -0700 (PDT) Received: by mail-yb1-xb4a.google.com with SMTP id 3f1490d57ef6-c6ab0d1b1dcso1933008276.0 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=HUGIGvyINekSoXANWj3iStZPnE/Mf5AALQEcMLZcXhpsUrpuO0rhDsqsjkxp1VUmRL p2pjS3stQCi9VRXyEsoIHTO2dBUPgRWlv0HK9KRZx5ztV0SDPDBO6Mw1qSu5hlHchXsJ 6x0Ytxzrv1SMDI3PPA0onj4eil6MyBkZeVDw+XaYA8RGXT1/Jh0cL9pBrgsNQ8EQuqmn UxabzRtq2MvDQqw4FWqO0TbPGCBiM72n7RMVgAU/8wV4TWPSjCrW5DsZCqzmPu28pBD5 Smer3Wobps5K7qhv2dAXpWp+Eit0WlTV22bqpskTnwH8Av1UJipbiexScyZA06g3B67u rYow== X-Gm-Message-State: ABy/qLa+3EEDB+NZTofJHB/R2fga/9aKfRUIid2fIVrSI/zh7QwoE5eo vVF8RZSjqlNyK1P4UfcGDNlexRyX/FGzmBS5xwOA 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 Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,USER_IN_DEF_DKIM_WL autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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; } -- 2.41.0.255.g8b1d071c50-goog