From patchwork Mon Mar 24 06:53:26 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrei Vagin X-Patchwork-Id: 14026840 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 D3220C3600C for ; Mon, 24 Mar 2025 06:53:36 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B7AF5280001; Mon, 24 Mar 2025 02:53:33 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id B0272280004; Mon, 24 Mar 2025 02:53:33 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9545B280001; Mon, 24 Mar 2025 02:53:33 -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 786DB280004 for ; Mon, 24 Mar 2025 02:53:33 -0400 (EDT) Received: from smtpin22.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id EC7B158E40 for ; Mon, 24 Mar 2025 06:53:34 +0000 (UTC) X-FDA: 83255528748.22.4909EEB Received: from mail-io1-f73.google.com (mail-io1-f73.google.com [209.85.166.73]) by imf28.hostedemail.com (Postfix) with ESMTP id 3BD98C0009 for ; Mon, 24 Mar 2025 06:53:33 +0000 (UTC) Authentication-Results: imf28.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=0bXHvH73; spf=pass (imf28.hostedemail.com: domain of 3bAHhZwYKCDkVqVbdibjjbgZ.Xjhgdips-hhfqVXf.jmb@flex--avagin.bounces.google.com designates 209.85.166.73 as permitted sender) smtp.mailfrom=3bAHhZwYKCDkVqVbdibjjbgZ.Xjhgdips-hhfqVXf.jmb@flex--avagin.bounces.google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1742799213; 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=xl8IF5RHpUU1Lg7cJxOKLVwxFTCbPq38iLJ6S8yYG08=; b=RtU0HtR9T7QUxRTafKA+KPQODjj/Bv6n9qhzHEH0cKok5Kvvd8yoIATiU5ocgOqLA2ZTTw 48DE86ugzg7DA4FD2W9x9Ib015Q6s8ofR22UsGXPeIbTgDR7vp0k+2vZmlJT1dHI9DUcCO rfcQEplgTbw50ssrq/ctEkp9Rd/QE0o= ARC-Authentication-Results: i=1; imf28.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=0bXHvH73; spf=pass (imf28.hostedemail.com: domain of 3bAHhZwYKCDkVqVbdibjjbgZ.Xjhgdips-hhfqVXf.jmb@flex--avagin.bounces.google.com designates 209.85.166.73 as permitted sender) smtp.mailfrom=3bAHhZwYKCDkVqVbdibjjbgZ.Xjhgdips-hhfqVXf.jmb@flex--avagin.bounces.google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1742799213; a=rsa-sha256; cv=none; b=gawIMqwARAN9TtqVTWM+2Awop0XXACH6Eq6doNjbV/2JzAMheF29ZY5sy6aKf9X1+f57ck 5CNrqcW9uEB2iwh02s5m943PyvS4MBbcyOGy/oeCFMAl4Yuout4LzKuhKX9UVmT18kR+GE /airUw3+MMdKUxuLV2eXV+emngL+vT8= Received: by mail-io1-f73.google.com with SMTP id ca18e2360f4ac-85b418faf73so955028839f.1 for ; Sun, 23 Mar 2025 23:53:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1742799212; x=1743404012; darn=kvack.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=xl8IF5RHpUU1Lg7cJxOKLVwxFTCbPq38iLJ6S8yYG08=; b=0bXHvH73wyeXqx2vj1EPkU8SQYJNCgr1ladQV5IWiVC1wCWjntF76xGK2j/8Yv5yHc Zq+lR/5i3sCy+sG6etok7LTx56QSFJF1gt19fgV8MPXyzrts23tdPsFYl6pbaGwCimPd vfJTAONgX7Sddzz0p67GaD3F0ltxapz5c3YON+EHcdvDNvs3H406psgWUPDV4FKnSB6P WdnfHeQywXifDkJ/yDLcQ3E1kMrKND8KKg/k5ElCO4JRUfjimH587ViymiQVXoio42I8 UZIlM1qUR+R4juSpN0JDGM2+yQGjJ6qCckWo++JMfcylYAw4W8P177G2SQXTo/utVaPR G41g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742799212; x=1743404012; 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=xl8IF5RHpUU1Lg7cJxOKLVwxFTCbPq38iLJ6S8yYG08=; b=aubJ0nJzbF8j2xDvO1oC4IhbJDvDKF05QXs1rfYr8zgZpYGEoJ56C7mKDRFCObJnSr xDumjXi2XhQwMR3XhBtu+o4IgP6vO+8Zly18gJxkvzT4L/bMGb4uX5UdUKDFQIw5vrLF +UMIJvNqvJLl/BDfmh1oSDWcOLdtUBEMeSPTe7xW9rMRYCBjj4X6a96QTSO21fe0Of7p B5WnhzLvEHyxjW6Ov7Mjycy87pRWwaKiHdHl6esvYYLfaSfkYPVXgv9jF81aSwfqgO3d 8+pBt2R+RhC2ROwnbfYZTpT13bLyZTWUPtnmT7m7de0XxUNmLOzmsuBLueq6TB3kp37W fS7w== X-Forwarded-Encrypted: i=1; AJvYcCXtqZp9hVbGrx8lUzIBPdRnvjneoX5+or+s7tH6UmtLcCUlGMDPXYB4lOtg6iguHcRg42smc3rbVQ==@kvack.org X-Gm-Message-State: AOJu0Yyf7l2P1vk1KvukDACGVp2nAa2HiXVREcTBiawAoOvK15UMM/mR 0sttAKjeCszijVOrflvgrjwleuUwoDInFu/phsR5MVr5p8KJi47lpcjIdLkkMob2KA+l/MQe2GW W/A== X-Google-Smtp-Source: AGHT+IGLukfQgJAXKk11u4fnuWxiAd2otr8HGeGoAqGpKKKT8IRHd3Jidw+Bw0GLHnKZol10jN2Ijr7hn10= X-Received: from iosu9.prod.google.com ([2002:a05:6602:29a9:b0:85b:606c:d446]) (user=avagin job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6602:418f:b0:85b:3f06:1fd4 with SMTP id ca18e2360f4ac-85e2cb5960dmr918008339f.9.1742799212314; Sun, 23 Mar 2025 23:53:32 -0700 (PDT) Date: Mon, 24 Mar 2025 06:53:26 +0000 In-Reply-To: <20250324065328.107678-1-avagin@google.com> Mime-Version: 1.0 References: <20250324065328.107678-1-avagin@google.com> X-Mailer: git-send-email 2.49.0.395.g12beb8f557-goog Message-ID: <20250324065328.107678-2-avagin@google.com> Subject: [PATCH 1/3] fs/proc: extend the PAGEMAP_SCAN ioctl to report guard regions From: Andrei Vagin To: Lorenzo Stoakes , Andrew Morton Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, linux-doc@vger.kernel.org, David Hildenbrand , Shuah Khan , Jonathan Corbet , criu@lists.linux.dev, Andrei Vagin X-Rspamd-Queue-Id: 3BD98C0009 X-Stat-Signature: urri7fdo831dsrrsx4gyn3aozkewrzhb X-Rspam-User: X-Rspamd-Server: rspam12 X-HE-Tag: 1742799213-807768 X-HE-Meta: U2FsdGVkX1+rnfGbCdsImvEx/IRX5vliUji34Be6diuMAuyjqXSUGE5HOAJNrLx2EHYFLf/KgcptARCiL4T8SCspaNR7NlWRm9nyyk5DMM4Wgu8FbwIbD5Sxg22IUR/gTXO3kR9U2WsS1s6+hRc/SjXV/5GjQ70tzgY55s287YJ2KthBbeMgOspkQuLSLufNR9Oj8O4qgoPgHwOKG88GJ7kS8uZ5ybsjR42x1tWPFe+npvDioJuyJqSQ2uME7c9b4ys7YeWhW4DGjtQBGgcrI5PjGuo3GybpAyg0BEv38QFPJxIDhIL+laYFmKorHNl878Kx9sXqxEY9wXD9XN+lzo2Wu6SFEFURaRrieQ66fnbSwxddtWNfJvQ2u/ikMU9A5Yw+Cwqyt2iEW1Yc/R2xnZZlNncGAtfbcS0Ezurs5S3ThGp6Bib/IdTnxzc9qTMG6cdPl8g5+oLC6Zwcx6quIQS85d3e8Pjy//tvrQQFTEn8Ef1k6dRsyHjSq1rltgZ553F+hm4K4zB0vgBg7TI8GAdQslbBrD54zxCDSv3315NQmapGKNpLkSvX1CEFUrq2jUevsI8DLMPeaDBHR3/v2XUK+8chx1xGr0EFfbM/rlIkGJLT9YJlSXee9a7Vjs5atLTkaG5kNuF9YtIyIECPQilEvJVpP7ew5ZhvyzNWUCRChNywzpCjvn5olXcpzlgL+5PSDPW28yTmE8+QcHjJxX7tCMrMmpgqmw2WcIZ4FtRtzYUiVPEFRMFowhozIX6FaHITXTZaJF5flsFjioENvx7d6gF2jz6UfuPqiBfPkmDtWMN/qCvOUDSdKZRUd0tOCCg2sEJrh1nKH/LYo8UyMYpToZlPjn9QRrlf3ikuhT24dSHP06hAGS4Eeq2u0JlZPuzftSKcJMPs9dPgCxP21XQJSULw9rrfuy6HGJgnofmDijU8PdSkgwyurSwD8MQlhxKRu5l85A63y8Qvm6A KWYrXdVs IPkdxf17NiD6sNDmUM6Sy7d7etZY1TwNBr8sUk0EjGKg3ebd2qdFktLRoGNHr1nD7M0TDTyeLlOJB+byS2WYxC3UrBYd5SVqaohDudhq85y3Z4reteA+/EGqcOV5U/yN4Tt7Rph5th62rFOhl1QCXqmgO1FjDtJbss6MCQfha8vrQWJq15zKfz1Jf+4FNgUX+JM7Wit8cZq/OZZWgf93haIMdp+qSNDx8gq78pX6/Ks0iCsSs1aF6RJ59Be2F4JQoz/bRAMIyOMQFhWYoOF+sN2p5TUVbW19A2fX1gdYGVdvZr54VnnhiNHQH/jugnungK9vicc9FoDkyvSo7IoSLk/8ZvXEOxv//wJMeJJ13y66VrrRug/Ju7EJsxh+f0hwkBXhPzX2a9eMXuAc7eiwm051jRQmHEALyTSJiCVyz0XV0YiYV1UCUfbMzJ4S9XrBBbnRXZZzHt1iqeCrPY6CMRcL54wfh7nox7OssCIbynHdCxZmWDYlia9fK8g5xgXZLbMCsXkR9SI802i2kPnE/Ird7otG/5GA36oF/4HSyinxrI31ri0wmothOJXZWKFYGcpLWwuGREpjGRm7y5+C6fmaZ18teDvAuTvwPmhUKbNeO0/fIG+Nd3k9+EvbYxjNs0JQ0Ksh+Z/5ztgGimno0lELrb8vocAQAzSeALTvzTqxMxpVm8adQsDleCnv+lhKQVOqNOAOGPXYPIewmo6uZGZSbtQ== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000003, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: From: Andrei Vagin Introduce the PAGE_IS_GUARD flag in the PAGEMAP_SCAN ioctl to expose information about guard regions. This allows userspace tools, such as CRIU, to detect and handle guard regions. Acked-by: David Hildenbrand Reviewed-by: Lorenzo Stoakes Signed-off-by: Andrei Vagin --- Documentation/admin-guide/mm/pagemap.rst | 1 + fs/proc/task_mmu.c | 17 ++++++++++------- include/uapi/linux/fs.h | 1 + 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/Documentation/admin-guide/mm/pagemap.rst b/Documentation/admin-guide/mm/pagemap.rst index a297e824f990..1f49762190eb 100644 --- a/Documentation/admin-guide/mm/pagemap.rst +++ b/Documentation/admin-guide/mm/pagemap.rst @@ -234,6 +234,7 @@ Following flags about pages are currently supported: - ``PAGE_IS_PFNZERO`` - Page has zero PFN - ``PAGE_IS_HUGE`` - Page is PMD-mapped THP or Hugetlb backed - ``PAGE_IS_SOFT_DIRTY`` - Page is soft-dirty +- ``PAGE_IS_GUARD`` - Page is a part of a guard region The ``struct pm_scan_arg`` is used as the argument of the IOCTL. diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c index c17615e21a5d..cc35d8990c54 100644 --- a/fs/proc/task_mmu.c +++ b/fs/proc/task_mmu.c @@ -2067,7 +2067,8 @@ static int pagemap_release(struct inode *inode, struct file *file) #define PM_SCAN_CATEGORIES (PAGE_IS_WPALLOWED | PAGE_IS_WRITTEN | \ PAGE_IS_FILE | PAGE_IS_PRESENT | \ PAGE_IS_SWAPPED | PAGE_IS_PFNZERO | \ - PAGE_IS_HUGE | PAGE_IS_SOFT_DIRTY) + PAGE_IS_HUGE | PAGE_IS_SOFT_DIRTY | \ + PAGE_IS_GUARD) #define PM_SCAN_FLAGS (PM_SCAN_WP_MATCHING | PM_SCAN_CHECK_WPASYNC) struct pagemap_scan_private { @@ -2108,12 +2109,14 @@ static unsigned long pagemap_page_category(struct pagemap_scan_private *p, if (!pte_swp_uffd_wp_any(pte)) categories |= PAGE_IS_WRITTEN; - if (p->masks_of_interest & PAGE_IS_FILE) { - swp = pte_to_swp_entry(pte); - if (is_pfn_swap_entry(swp) && - !folio_test_anon(pfn_swap_entry_folio(swp))) - categories |= PAGE_IS_FILE; - } + swp = pte_to_swp_entry(pte); + if (is_guard_swp_entry(swp)) + categories |= PAGE_IS_GUARD; + else if ((p->masks_of_interest & PAGE_IS_FILE) && + is_pfn_swap_entry(swp) && + !folio_test_anon(pfn_swap_entry_folio(swp))) + categories |= PAGE_IS_FILE; + if (pte_swp_soft_dirty(pte)) categories |= PAGE_IS_SOFT_DIRTY; } diff --git a/include/uapi/linux/fs.h b/include/uapi/linux/fs.h index 2bbe00cf1248..8aa66c5f69b7 100644 --- a/include/uapi/linux/fs.h +++ b/include/uapi/linux/fs.h @@ -363,6 +363,7 @@ typedef int __bitwise __kernel_rwf_t; #define PAGE_IS_PFNZERO (1 << 5) #define PAGE_IS_HUGE (1 << 6) #define PAGE_IS_SOFT_DIRTY (1 << 7) +#define PAGE_IS_GUARD (1 << 8) /* * struct page_region - Page region with flags From patchwork Mon Mar 24 06:53:27 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrei Vagin X-Patchwork-Id: 14026841 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 D3375C3600B for ; Mon, 24 Mar 2025 06:53:38 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 3CFC1280005; Mon, 24 Mar 2025 02:53:35 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 3578C280004; Mon, 24 Mar 2025 02:53:35 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0C281280005; Mon, 24 Mar 2025 02:53:35 -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 E4063280004 for ; Mon, 24 Mar 2025 02:53:34 -0400 (EDT) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 58DE51CCA08 for ; Mon, 24 Mar 2025 06:53:36 +0000 (UTC) X-FDA: 83255528832.30.5742C53 Received: from mail-oi1-f202.google.com (mail-oi1-f202.google.com [209.85.167.202]) by imf27.hostedemail.com (Postfix) with ESMTP id 9740140009 for ; Mon, 24 Mar 2025 06:53:34 +0000 (UTC) Authentication-Results: imf27.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=jM5bdD5d; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf27.hostedemail.com: domain of 3bQHhZwYKCDoWrWcejckkcha.Ykihejqt-iigrWYg.knc@flex--avagin.bounces.google.com designates 209.85.167.202 as permitted sender) smtp.mailfrom=3bQHhZwYKCDoWrWcejckkcha.Ykihejqt-iigrWYg.knc@flex--avagin.bounces.google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1742799214; a=rsa-sha256; cv=none; b=ppOAroPiuK58fGczcNIq9ODLDl8ZkYltca/stXva6LN790FFdLxJB5zc/wK4snQo6Q1fXw 2x1dEBnfth6CkRYfJW5VEfSu76lhMHhPKoXgJSaMnA1kH3WaNknJqDN+zByAdWBFCG6ujP NDTIt17xroho++cO5vWl7xzjlHiJtgw= ARC-Authentication-Results: i=1; imf27.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=jM5bdD5d; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf27.hostedemail.com: domain of 3bQHhZwYKCDoWrWcejckkcha.Ykihejqt-iigrWYg.knc@flex--avagin.bounces.google.com designates 209.85.167.202 as permitted sender) smtp.mailfrom=3bQHhZwYKCDoWrWcejckkcha.Ykihejqt-iigrWYg.knc@flex--avagin.bounces.google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1742799214; 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=mHKQPGagMOpPzVXkQrg+YdchEGJ0YJ8P2M6qhZ6IcLg=; b=GuMv+Qh+fud/mQ3C++teHjoWgVLF77pzaqHFR5KR/rbuJENA89HgDdTgO3Jjenmtxtld8R 462GVj6h1/9SD+KeUcYxOuv0C6CAEv1r8hH5OLCDToTV2xorl4phU/h/YSrBgcErpuIjCB x+SfVw/v4pItawPVvXW/3WRgnOZTjeI= Received: by mail-oi1-f202.google.com with SMTP id 5614622812f47-3feb1dce9ceso1122959b6e.1 for ; Sun, 23 Mar 2025 23:53:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1742799213; x=1743404013; darn=kvack.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=mHKQPGagMOpPzVXkQrg+YdchEGJ0YJ8P2M6qhZ6IcLg=; b=jM5bdD5dVEvD5/SfgLq6YVl5FGVeJ7+JYA+73ZuZiavDkUQWBYDmmbTST/IFxpR3kz s6TQ9xs2eDxHyBVXWOSnwE/husydIZufnrgHsbjnUpD5LCdNC/tq8JNvhRGzoJsr9mYZ WtEivtOvvluU/EYgprdKEHbTuvSA2Q7TIhSNRUjTbvJ9pQ23hsRH69ONxS18BzApxlOc tNmI4qaOp98QMrmPDVaYl4tYis8E37AgufG5dh9v6w+3RhoV2BXgtts4DqYG/NxG7wMB oSnFnLNXkCbW3opnCo0BPhUQkuET0DaYhUfx0DP1dGtGDPeiMtpi2CC0GaYCjwX2zzTx u+Yw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742799213; x=1743404013; 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=mHKQPGagMOpPzVXkQrg+YdchEGJ0YJ8P2M6qhZ6IcLg=; b=fj0xTBeklYNqqDTpAevi1AMb04W5AjIo7U0x+/uCw+kZghbxkMMGa3DzYFrw+bfxKq JirwbtPu6xGvExguwP8cYf2EEmU2yGIo2VmWMQPbjjuUHgpxSTinmkSYoVaBmj5rpr9u SXOcxjZTu2tAmRkb4zvQM/Wg4jMhqm6wBfl57TWGZHw3v35UZ0c/jRFYLqC2ARJbhN8U HQCMVrV+xKuorBjLb9W6trBGuqPTQy+inwFdWQjdDwSOECmbjPuz6c7cc+dmFxnhJnap ufk59cOryiTUj4RnXKp1U+WSPQNYoD/3/dOei/47M0F/KBvFoRLbyqFER2roC6cb3YJB Lo8g== X-Forwarded-Encrypted: i=1; AJvYcCW/3LCesXOU8YOk9/mqp/mXvUFVO047u4+WKtAxTvBSeb/rL+sPxkTgW3c643BHjRCHbvDl8EneUg==@kvack.org X-Gm-Message-State: AOJu0Yy6m3OHT0NcuN21zuq4zGvx7zr5wiMzmbRLRq0qjZz3O9Sai0Xh SBI47eKyFIcR1tvaK6rDYuI4U7R06X2nj6pdCyAjvHXiwc9yTxt/7dnpEqBBo5YicNIYf1uFG6m 9LA== X-Google-Smtp-Source: AGHT+IHdUZdDUihniNDxIj7Y5cXrzFf0YBkU/hlZx14R7lVEo/UwEmOdH9bM8gXluf4n8aUSHGMsn5H0BYM= X-Received: from oabry11.prod.google.com ([2002:a05:6871:208b:b0:2ae:bdb:eb0]) (user=avagin job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6830:2813:b0:72b:919a:fa96 with SMTP id 46e09a7af769-72c0ae465f1mr8859493a34.5.1742799213422; Sun, 23 Mar 2025 23:53:33 -0700 (PDT) Date: Mon, 24 Mar 2025 06:53:27 +0000 In-Reply-To: <20250324065328.107678-1-avagin@google.com> Mime-Version: 1.0 References: <20250324065328.107678-1-avagin@google.com> X-Mailer: git-send-email 2.49.0.395.g12beb8f557-goog Message-ID: <20250324065328.107678-3-avagin@google.com> Subject: [PATCH 2/3] tools headers UAPI: Sync linux/fs.h with the kernel sources From: Andrei Vagin To: Lorenzo Stoakes , Andrew Morton Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, linux-doc@vger.kernel.org, David Hildenbrand , Shuah Khan , Jonathan Corbet , criu@lists.linux.dev, Andrei Vagin X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 9740140009 X-Stat-Signature: yxwefjyda9so58a7nwi9twagszqnro9h X-Rspam-User: X-HE-Tag: 1742799214-594632 X-HE-Meta: U2FsdGVkX196z//fZu66DAmmpkg7MQSrOg5qCpbqPRE7dJ2HP/xXLaXH2iGxkZvvbkKnin1Bn9Bwf5PYKajW0QeINgCI3hlpVEKxtjlkFDCydcqjCQeBC7167LqkAr6N9ZX5WR9w1RX03QhHnI9i19uCdpoeUwyUOPwVImNDlXduXB6jFo9ryRnt2cwtjjDNMLLjnU8ozqgxiN93LU1o1xtgg3cmk4cyxkIbqw9lEtgEkryRcKuFf7XQQDZx8nXR3GyHf+VycGnWVqVguUyJ0GbRFYCS0oZ1L1DJN+73647AWdu7xuDSVoE+yE3d4Vg2ZYDyYD2TcG+uCLN+tnwH6V0OMzKlqGH6zZA4KH7iyeU2WvVt9g5zNP+CggM3KVCQMd3g5UpUnfpeIx6Es9Sa7cl3YNCIPZyMzlrnuo70Msrd+yFdrd+bkmbgm7Yk2eT30a3FDL8NIJDTfcnvd+3NA1VvRq6COBzKyAcxLcIitw775NH8lSfvDPZmHBBdJ6lyUkYMwpwQR9RrfW3nh+laOI23qzfjyMFCKLPbUlLkIF1y+/Jtafi47izh9+CJqprXj4xnr4qzGymj3YzVhJM5aYRTHOhJkersXAOgDvSfzTV1gMKZQ1uPzEE+nja/uzwkATGFEWWDi64aTd/9mz28vcVPFL7+fWS9JGnyQ7pnTDodWluNUjq9fhxRqa797koic1aXR6wJbIi7WliYFr/EqSH8DzH4FYPBdf/epluSrKh8MKE4VPUvjy0oU0Wf41hlVlDpoLH7O8ddd6c0q/snKgJFPrUw05X59OCsJK0/EkFk5PQgg7DrQ/SwKYV9azcCPRTmILAP/Nkx7pIWdTATNiKLXCqKGkcBASQ7lr9Zgj5Ce8PZE7WOnObiFBOT8kSuAPdsjmGQdcSTljJdv2klf1nwWS0e2PS0WToULWY0wrZ8OUJshARFjfj4ht4yCng47eHmc1PTT+BcW29NUSP /FAa/Hx9 ruYnvD4ZlXF7ZAOaZqfDM9FWDrfkYIhdFj4Rfw2SI3cIQhx1L2wVHWZllg5C94ngjKw513+NpcQULq7D+YfrWWUdDYDyuxkmaJUV7FrtIAkwvUGpeGxOiqhYLai+yFyED0YvtQON2O/bhjolPvG1xlYp4SZmUXKam84rlV5tMeCeI9+8DPIiLpXNqrY963iCwoiblVe4zSlf2KL4cn8p5ih+IeiH7cLQbJIKkESRjsE6m99w6ELkz+MpTBGI7TZwj0zYd7EdyTUu7dxgSJiMuOFaTDwU4feaBteGE9nqkAFquXlLBCIv/0bGJ73siRojAXotFvMZ6U8ywJqgrrSSmaBlH2dq78z7ar4DRjVJgwjAvDmXejGXD3T1k89jtpXGaC1WIKXUK7s4A86+Lz0r27VrwIuYx4D471JsU3kNnfqCFJnRf/sdlKaGM7o5JW0oI/LKUlBkC+Z6UBz7ppw371ovs4mlbvH4i6gPbcsCuI2emihLirMYHigkjnFxP4sXGqIGRjXVl4wpD0FJo834AAgJP/Gg/HH8WW+mseEBhL9uA/8qUIpl28J6zbCeVsak+qMNmuvP5AnnVECM= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000001, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: From: Andrei Vagin Required for a new PAGEMAP_SCAN test to verify guard region reporting. Signed-off-by: Andrei Vagin --- tools/include/uapi/linux/fs.h | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/tools/include/uapi/linux/fs.h b/tools/include/uapi/linux/fs.h index 8a27bc5c7a7f..24ddf7bc4f25 100644 --- a/tools/include/uapi/linux/fs.h +++ b/tools/include/uapi/linux/fs.h @@ -40,6 +40,15 @@ #define BLOCK_SIZE_BITS 10 #define BLOCK_SIZE (1< X-Patchwork-Id: 14026842 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 34201C36008 for ; Mon, 24 Mar 2025 06:53:41 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 06EC4280006; Mon, 24 Mar 2025 02:53:36 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id F18E0280004; Mon, 24 Mar 2025 02:53:35 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BE072280006; Mon, 24 Mar 2025 02:53:35 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 99024280004 for ; Mon, 24 Mar 2025 02:53:35 -0400 (EDT) Received: from smtpin07.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id E4CDE1C7CB7 for ; Mon, 24 Mar 2025 06:53:36 +0000 (UTC) X-FDA: 83255528832.07.D040F66 Received: from mail-io1-f73.google.com (mail-io1-f73.google.com [209.85.166.73]) by imf16.hostedemail.com (Postfix) with ESMTP id 2DCD5180005 for ; Mon, 24 Mar 2025 06:53:35 +0000 (UTC) Authentication-Results: imf16.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=RYTjUZ8D; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf16.hostedemail.com: domain of 3bgHhZwYKCDsXsXdfkdlldib.Zljifkru-jjhsXZh.lod@flex--avagin.bounces.google.com designates 209.85.166.73 as permitted sender) smtp.mailfrom=3bgHhZwYKCDsXsXdfkdlldib.Zljifkru-jjhsXZh.lod@flex--avagin.bounces.google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1742799215; a=rsa-sha256; cv=none; b=ESb20RdlqM52xtdL4po2IRebwlfPjQqv+Pz3MWGkp3lBD0sVr3YQmLwwLoY1o8Soc6RdGc oFDzxTS+0bGTbXWgt5AoDBS4K9kOrYKhvhEjCm6xQ/6lgwvUvY30fhjFgrFmJ9msfW/g+K P7kEw4xTssD75I5rL6JYdcCMq0Hsmls= ARC-Authentication-Results: i=1; imf16.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=RYTjUZ8D; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf16.hostedemail.com: domain of 3bgHhZwYKCDsXsXdfkdlldib.Zljifkru-jjhsXZh.lod@flex--avagin.bounces.google.com designates 209.85.166.73 as permitted sender) smtp.mailfrom=3bgHhZwYKCDsXsXdfkdlldib.Zljifkru-jjhsXZh.lod@flex--avagin.bounces.google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1742799215; 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=ffy3DLCEfKN3in8d5zlc7vx3iwgfrqHuCXTxXTm84ts=; b=SzMRPFGrWXjQEpKoLoqMPH1eBXUq4UCwlLCpguU3t4m/bRxZ3LzkFnuKXTR6Ym69kWVmsR GJpZvi9o0ggGAQfRECPFQIeKMlEdVKV3EU9+0jtYzFQfqplrInGco+9KnPabQJxLnCs51g JxSb493BUIBMd/bXehZ64YUhmOMX3SY= Received: by mail-io1-f73.google.com with SMTP id ca18e2360f4ac-849d26dd331so499610139f.1 for ; Sun, 23 Mar 2025 23:53:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1742799214; x=1743404014; darn=kvack.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=ffy3DLCEfKN3in8d5zlc7vx3iwgfrqHuCXTxXTm84ts=; b=RYTjUZ8D+ESAv7Kwli3YOWgCen+5lXrTI7zuQf2jCevV+i2j87/nf3UpckjJMwYHne YCug9OAKEtWdIaZFlhhRI+ed0IPJWXFI6/bwAbCD/VEEPxNToGTbxuu9UVjxVpOCfdIz QK7121h6oh+XZjMm8WeihTK+g1e5cTzmMlo31wJu1xQugdrYySsFT8ejwOC1qMvZQlKm W3cfH2rjtUK29ZxlSky2KJETUfJD7W/ail4PRrs5VhG0Tj24y5EeSLLZ+Z+zzvO+NWEA 0cWBXwcwS9DNh9RGI5XwN55hRHaiVT0ED1URUg8yAax2hdNZEBkj7Hf8IK93UGgzCp8x 7qIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742799214; x=1743404014; 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=ffy3DLCEfKN3in8d5zlc7vx3iwgfrqHuCXTxXTm84ts=; b=eYrKvyqOVAFfPo6voBmmuxD/6YZPFgBWVdz4SgnqXu8Oos/09TYDZpsc0GIhZ8lBF6 EglYB1rdSoWvpr36wKC88RWvhLjlemDjCwCP0l9oKFZB6FdLD/voVJdbBSDaSzUk5Eui f/isjyZIgQSp9ldjRDl2ENioOo/6yt0sEf+z/3NeMGYSgZF8dp84QgedMW2WZb0eX+fM lZvxl/cPq174sk7h7ngo0NcNs784Ul6TcLW0gOWWcOWwfu6UqXzk0dYxdpOtyJSjyCNx AJYjAeLD4L89WS8sL8EHWk7JKhdkRBzY24A1wUbIwuKE2OjSiUz/2VIEonZpQtdUkIQu KmCg== X-Forwarded-Encrypted: i=1; AJvYcCUIZe/ssNqlxjuYGA2QuFlAnlvQcAHYSmHlxQp4QY9CUwJ6U7AYwdrzyAm1KcGuVGBGj1ztgd+kGQ==@kvack.org X-Gm-Message-State: AOJu0YwDermIXrX8hxsWBUDVf4p8FZslUyZrrnuiNAESYVcotH0Y6K5V xCBaWRwV6+I+oh6Vy8jqFwNeg+OxdT4Km0GuZvRKMu1ePH7gkpTFMWsK52URg1pVL4XTUegSWUq FaQ== X-Google-Smtp-Source: AGHT+IFwtFlPb7SBpjbVuF+q5bn8QiiRzWt4tMIZGVuP7apCHzJYW7HGlUxBgl+wR+Dv2VtTkkVMvH9ZZQw= X-Received: from iobbw19.prod.google.com ([2002:a05:6602:3993:b0:85b:40c7:ce65]) (user=avagin job=prod-delivery.src-stubby-dispatcher) by 2002:a6b:7b07:0:b0:85b:5511:e47f with SMTP id ca18e2360f4ac-85e1ef9251emr1427245839f.3.1742799214336; Sun, 23 Mar 2025 23:53:34 -0700 (PDT) Date: Mon, 24 Mar 2025 06:53:28 +0000 In-Reply-To: <20250324065328.107678-1-avagin@google.com> Mime-Version: 1.0 References: <20250324065328.107678-1-avagin@google.com> X-Mailer: git-send-email 2.49.0.395.g12beb8f557-goog Message-ID: <20250324065328.107678-4-avagin@google.com> Subject: [PATCH 3/3] selftests/mm: add PAGEMAP_SCAN guard region test From: Andrei Vagin To: Lorenzo Stoakes , Andrew Morton Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, linux-doc@vger.kernel.org, David Hildenbrand , Shuah Khan , Jonathan Corbet , criu@lists.linux.dev, Andrei Vagin X-Rspamd-Queue-Id: 2DCD5180005 X-Stat-Signature: 1jp8y4z9fhzjmrry3btg6zqywsmdzx41 X-Rspam-User: X-Rspamd-Server: rspam06 X-HE-Tag: 1742799215-351452 X-HE-Meta: U2FsdGVkX19zJgre3yw9KqjQcyVK9mewIYtUVGqOx2wLy0bTZayxd1JTlIE/Sgm08MjZwxPA+/Pf9bDtwNisrv1Vo0UCNAAAAlu76OXfoYIScDmN3sWYag+YAPJI1nMkxu1Nh6BacN+UcgGaxpJ0nvyVWgpkTnLv9Jmdt/tAQG+1YPGEHNhhUGRrac2lRUKNqW5SiiDXOY47GiqW+l0ZK8+9Y8aBs1drc8K9H/KIOT7l+QStjklp42kqNUzJNc09Apa7f7O1x0To61clmqW6JVxh2BT+Ak2yXBT1RuipAVlrJNTAMvQP3uwxWsW6dmYGFJWb+Lf10c2l/YT9E0NwTeXu0mNFwkUxkvqSt6Db6yhHXGi5+bH+VL7KXESP9jhFywxQAhTQMwsu2Tun+hw5jmuPKFtSV7K1S9owG1aMNTn0Rf/Rh7lWOWrZnzfkJnsF69/IZDYRvvorzj7868WURlRk8UTylsydhYmmJ1o5KfHO+Is3QRiVZ2wh+IUk3+L0qQoEP8VGKKBGYEQW4Ho04YpIa0hZjMENzDUTdTho2giUqYWpHpzRvjog082GTiuNU4J8z9di8YnaXKzqmSYxqsJ2QW7+1sFNACI1qj0GmZ4B/xQdFn0WmMoOZk+t8XdgfL1IbD97U+yo+OMI9e5WkdetjgvRaSqpi0NPrAMXjfK1Gsa1/6CGv9hshI1YBU/6x/+DA1WE+bJthon2p+zngLQ3mKhjJaCfJLp6to2yVXtDWySQNIQNtOaOhdQuBDoE+rNE4K1L9rnFs/t4m0uqAH9ylGwA9WLHOyrADl5BwFrBos3IYk0seQEUrhPFYv+5M4m2rDkk2uZXZr4faOfaHCI3VdBRfd7sicYHkc4tr18eStko2rMiuo7WPZvNQ0jHXEy+X+eHLj6A41B48FWNdYvI/JYneO3FyYcmOtYt64Dyy5czAqcjsxoIlLpTAon6GrrrHbXhrQn4nCnczuT 4CLeqdAU 5MobEky2EPNcxRWkYAaC9N9RNmeyKfNjTHFGWvX0UdWhU/vXLzVkvSDZFS5FG9QVrHGiyN83w9uzfXxUx9szhzqA1xZvPI+k47wUpuieAaXnfM6WS473UPCmQFIRltuefjvUx6AM9+EwLk6e+byYdVrDJzg2s0pw5yiQBbIspcamlvnbaJM43Nhpf8kOkK5ubFX11DQJ1OpZo7JDg3IyO6KpX45KpcVRpQwnpGGoLYFOvFmgTfm8IP1gGjzqeGnJ/DzO0vDzC2RbkcGdJWmEjSWPoVS8harY3D2RTAJC6KfLm2CqsXLP7qOYJcBq0B8sJ609PqpMarwfhsauOkLaufCJdqKwoVHkBuwoN9FEIuBSWsGz+ih9kgQ/L2ANZKkq4Eq3oyTSAmF5146I/sv3hRZma4+PSh6QT9xf12lyT2NQCTlAPaRdd6orlRgf+SVynyYpoDFhJV4alinhDSN2xj8EmXRF9oG+HKCBKHwv3V2e3NcvdssTcAUkuY5EdqP+9isxLKBd40DrrRsXjQH0bXnAx3BkrC/gbazKbZvH2ZGjCMOswKxmnRA2jdB6ESAF4yIGEduXR+sGPLO7SwHgH+C7Dx1/SWTNIXwQvpqIf8mOAXtm71TdFD/zWJg== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000003, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: From: Andrei Vagin Add a selftest to verify the PAGEMAP_SCAN ioctl correctly reports guard regions using the newly introduced PAGE_IS_GUARD flag. Signed-off-by: Andrei Vagin --- tools/testing/selftests/mm/guard-regions.c | 57 ++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/tools/testing/selftests/mm/guard-regions.c b/tools/testing/selftests/mm/guard-regions.c index 0c7183e8b661..c99f3da8bfb7 100644 --- a/tools/testing/selftests/mm/guard-regions.c +++ b/tools/testing/selftests/mm/guard-regions.c @@ -8,6 +8,7 @@ #include #include #include +#include #include #include #include @@ -2079,4 +2080,60 @@ TEST_F(guard_regions, pagemap) ASSERT_EQ(munmap(ptr, 10 * page_size), 0); } +/* + * Assert that PAGEMAP_SCAN correctly reports guard region ranges. + */ +TEST_F(guard_regions, pagemap_scan) +{ + const unsigned long page_size = self->page_size; + struct page_region pm_regs[10]; + struct pm_scan_arg pm_scan_args = { + .size = sizeof(struct pm_scan_arg), + .category_anyof_mask = PAGE_IS_GUARD, + .return_mask = PAGE_IS_GUARD, + .vec = (long)&pm_regs, + .vec_len = ARRAY_SIZE(pm_regs), + }; + int proc_fd, i; + char *ptr; + + proc_fd = open("/proc/self/pagemap", O_RDONLY); + ASSERT_NE(proc_fd, -1); + + ptr = mmap_(self, variant, NULL, 10 * page_size, + PROT_READ | PROT_WRITE, 0, 0); + ASSERT_NE(ptr, MAP_FAILED); + + pm_scan_args.start = (long)ptr; + pm_scan_args.end = (long)ptr + 10 * page_size; + ASSERT_EQ(ioctl(proc_fd, PAGEMAP_SCAN, &pm_scan_args), 0); + ASSERT_EQ(pm_scan_args.walk_end, (long)ptr + 10 * page_size); + + /* Install a guard region in every other page. */ + for (i = 0; i < 10; i += 2) { + char *ptr_p = &ptr[i * page_size]; + + ASSERT_EQ(syscall(__NR_madvise, ptr_p, page_size, MADV_GUARD_INSTALL), 0); + } + + /* + * Assert ioctl() returns the count of located regions, where each + * region spans every other page within the range of 10 pages. + */ + ASSERT_EQ(ioctl(proc_fd, PAGEMAP_SCAN, &pm_scan_args), 5); + ASSERT_EQ(pm_scan_args.walk_end, (long)ptr + 10 * page_size); + + /* Re-read from pagemap, and assert guard regions are detected. */ + for (i = 0; i < 5; i++) { + long ptr_p = (long)&ptr[2 * i * page_size]; + + ASSERT_EQ(pm_regs[i].start, ptr_p); + ASSERT_EQ(pm_regs[i].end, ptr_p + page_size); + ASSERT_EQ(pm_regs[i].categories, PAGE_IS_GUARD); + } + + ASSERT_EQ(close(proc_fd), 0); + ASSERT_EQ(munmap(ptr, 10 * page_size), 0); +} + TEST_HARNESS_MAIN