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 DBC65C54E67 for ; Tue, 26 Mar 2024 15:10:28 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 711DE6B0087; Tue, 26 Mar 2024 11:10:28 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 6C1C96B0089; Tue, 26 Mar 2024 11:10:28 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 5165F6B0096; Tue, 26 Mar 2024 11:10:28 -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 421D66B0087 for ; Tue, 26 Mar 2024 11:10:28 -0400 (EDT) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id EFC541403B4 for ; Tue, 26 Mar 2024 15:10:27 +0000 (UTC) X-FDA: 81939526494.18.6164AE5 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by imf01.hostedemail.com (Postfix) with ESMTP id F24C540030 for ; Tue, 26 Mar 2024 15:10:25 +0000 (UTC) Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=PhDzlAIl; dmarc=pass (policy=none) header.from=redhat.com; spf=pass (imf01.hostedemail.com: domain of mszeredi@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=mszeredi@redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1711465826; 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=rHBAVem4f68aO9p9lIl2iAeX/K7t0SIt6WI+yo8kk5A=; b=YZEDFU/uXjAMOJ0YSU1ql/tJDuE8KExbLv5mBoq4vAj4MxdRoYXASzEGyTTkbNeKkex4Io 7mFoqHIbE2xm4y7cSFdVJMyAoc5gGRMCGAQsAhWLd7cS4y6ezD7SyZO9/Y2WEuB+ZqQFkQ Sdl63xsHt8J4FgUdK46327+7HVphYmc= ARC-Authentication-Results: i=1; imf01.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=PhDzlAIl; dmarc=pass (policy=none) header.from=redhat.com; spf=pass (imf01.hostedemail.com: domain of mszeredi@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=mszeredi@redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1711465826; a=rsa-sha256; cv=none; b=vmOIX66jVnm3O3T8iWMAt26Cp3qmXWmcT53eKJ4j9+bub/MvVrbH49LVCH6oCbnBER09qB /sytSHSjRlIGroe5Jdr3bs5/vR/xZzzOCUecLTO7xXBmTdLR3PFRm6CXi+TXM5SUYCwDqG xUEEiI5BvVdFxe8eI2JD0OA4gGdNSuk= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1711465825; h=from:from: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; bh=rHBAVem4f68aO9p9lIl2iAeX/K7t0SIt6WI+yo8kk5A=; b=PhDzlAIlEn6M1wWJn/7SPBq0EGs9u/vZH9yrw7GNEfIfIoxkjwvg7UKU6epqZZKt6Wuf58 6eOijCZ8yYW9b+llQJfUyIuJ5tFq2fRCSY3J2JULRtv69CZP0dTs0gFAxstUP79uTjL8/8 2BxVwyQothA0Qo9mes1EwmtiD2y2fLw= Received: from mail-pj1-f72.google.com (mail-pj1-f72.google.com [209.85.216.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-193-F4AMf1unMkyot_ayxnDz4A-1; Tue, 26 Mar 2024 11:10:23 -0400 X-MC-Unique: F4AMf1unMkyot_ayxnDz4A-1 Received: by mail-pj1-f72.google.com with SMTP id 98e67ed59e1d1-29df4ec4304so4635953a91.3 for ; Tue, 26 Mar 2024 08:10:23 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1711465823; x=1712070623; 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=rHBAVem4f68aO9p9lIl2iAeX/K7t0SIt6WI+yo8kk5A=; b=q7BGGb6my5ilv4JAHtPnrT8f1zr5HKg/gSOrvtigB23CztphRsRrnruvVl1tai9Obp yOprAchZRXHtnAO57IYWrAOVHS+5L9BBVxMLROsG7vyxkhjfMVaEep50/VAp/v6o/Lnh f3yr6WmzfGU9Gn0lSBI7IlElf0vXa+S+s30NeOyPZ/Re68mU4A96MYykp3YCQYcuwy0V SQRqMnJkx8vminhioPpXO2d1DzUmhHaLPRwdEOM1o0A3QRmRiuyZp3kITQ21p32q/y0E eAIKy8hJpe00F5E0QJKXYh/sEHMgfYTY3ei/WT9nU0j5DlAWlTWjAj6uYxHJRRq6tsO7 En/A== X-Forwarded-Encrypted: i=1; AJvYcCUXywhqysu4xJ9cxsaBrVx6lgzs/OblP/gn24VdhK2BJECuXJTW30TWil+hsLEJlp/DucGOBXsDWYd+dUK940GJv+k= X-Gm-Message-State: AOJu0Yw+J2Jy/T2NwlDPcpp6GUUcEEtlTohNxKrjXjK0SnDB0bmGKr1a fDRqYjYRR9S5ChQErRGHMa7CUjGSq12u1yzygHMpgzr+OUnw7W2ZAc+AWYkv+0wPgF9fuMQXSsv aL8adRW5+MUY3TNb/gFgjV7myp9nK2R5ZrskuCDLciUcWpRnbfRw7Ey9KlyEiG5K7tmAuxvQhu4 fnVIYrwEqL5sm3jDVUoQ8mhUc= X-Received: by 2002:a17:90a:fe85:b0:2a0:33c2:997e with SMTP id co5-20020a17090afe8500b002a033c2997emr8413632pjb.41.1711465822822; Tue, 26 Mar 2024 08:10:22 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGAJWrGzQomM3G/TFjykkA3Nu+aRm+SLIK3wmvcd0KA8T1wqDiVw9EewPPyP3FnLGu1d7WEN7AavJuwcxUDtgs= X-Received: by 2002:a17:90a:fe85:b0:2a0:33c2:997e with SMTP id co5-20020a17090afe8500b002a033c2997emr8413608pjb.41.1711465822503; Tue, 26 Mar 2024 08:10:22 -0700 (PDT) MIME-Version: 1.0 References: <20240326143210.291116-1-david@redhat.com> <20240326143210.291116-3-david@redhat.com> In-Reply-To: <20240326143210.291116-3-david@redhat.com> From: Miklos Szeredi Date: Tue, 26 Mar 2024 16:10:11 +0100 Message-ID: Subject: Re: [PATCH v2 2/3] selftests/memfd_secret: add vmsplice() test To: David Hildenbrand Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, Andrew Morton , Mike Rapoport , Lorenzo Stoakes , xingwei lee , yue sun X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: F24C540030 X-Rspam-User: X-Rspamd-Server: rspam04 X-Stat-Signature: nydjutjh69at47m4wfn3ybojumtfzw7w X-HE-Tag: 1711465825-780060 X-HE-Meta: U2FsdGVkX1/zcm+dy2bLqiuEZs4OCsr5gHUJRhvjGx/qNn02swd/4WXVzEmGbxToIblVMP0ItZdWhYBLFmOZmcSTvKxrgZU5Wdpic+uL0zSDKsA0ay/5XLXR41EDqakhDsGXnMOwbDENjvPQZwXVVecodvQC0FeVIY8tZZBcKaU1O4iAl1I1keISPIjiV991MlzKGiPtcG/9T8BGujbIFBVG9/zgR0bID0ouKI5NunxANr9VVR0Asgz8w6+RmS5izyqHhnQ1c94TuENdGNrHH4cfsdUMVr29sLAosu9PxTl7B6kwlbkkkLkyXtEecjBrZjc4+WVVE6YXGD+u5hmuBPBnuObiGuPTTNzBkAxvuLnaV1lK4VZaNduikXzRsnBjG9oWYdxMcDtLOjsoVl03/tXVMT1y7Ik/p8WnvEjtqob7SRhAERAFA78+5l7XOCxkbOY8ACSukU/w9a/z6Elzy9LB1XnnjNLQXfTyHzEpH8Xiy6ZrHPxoC04/abr+hHAQ6dzxJGNTqqjc7T2vrKbt7l/L6WKo8KVAseAxTk5UIV9lfwW8M7nq8gnQ1ukVjG4MjN/qTu15YjGGedFT8U9++py7LYoDfiPbLaM5s3+7Y03NBYb7eFCiBg55LH/BQFczwJ9yvBBSeMnkUjG32kAZxRj6rZVfk+AJVrxoT9FbxFq1SuSGKGr/LZGMtoICSJTeK+p5qc9uN0W2j6gC3r6rMO3oYOexa8rsf3fQF4fsuuFOtIFzyOF/unTR4CZy9Mt4IS2Pum3KB8v4Ym75Ll3QKsQtOLgk+Vt5LgR+J5F6vOzCE+A42kN6K4goofJDl1N+u8kBPgbMjdPahgVhbMVjSlgQPm9lhVUOrkbDXdKoS46wfe3vfrSQjsWm5lQf18HB9vvV6lHYFhDulVlqQjkxU0sujUW5GALUaRzA2ClfvyfYWNLRxHsBZ5VsN06QttOXWC3ev3OFurDmlZS3vS1 YnCulADW TMQorpTMYHSPZzc9GBZ7ygstfE20cef1K01icZEgPvvV5eU/K/XIZiyA7pQ== 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: On Tue, Mar 26, 2024 at 3:32=E2=80=AFPM David Hildenbrand wrote: > > Let's add a simple reproducer for a scenario where GUP-fast could succeed > on secretmem folios, making vmsplice() succeed instead of failing. The > reproducer is based on a reproducer [1] by Miklos Szeredi. > > We want to perform two tests: vmsplice() when a fresh page was just > faulted in, and vmsplice() on an existing page after munmap() that > would drain certain LRU caches/batches in the kernel. > > In an ideal world, we could use fallocate(FALLOC_FL_PUNCH_HOLE) / > MADV_REMOVE to remove any existing page. As that is currently not > possible, run the test before any other tests that would allocate memory > in the secretmem fd. > > Perform the ftruncate() only once, and check the return value. > > [1] https://lkml.kernel.org/r/CAJfpegt3UCsMmxd0taOY11Uaw5U=3DeS1fE5dn0wZX= 3HF0oy8-oQ@mail.gmail.com > > Signed-off-by: David Hildenbrand > --- > tools/testing/selftests/mm/memfd_secret.c | 51 ++++++++++++++++++++++- > 1 file changed, 49 insertions(+), 2 deletions(-) > > diff --git a/tools/testing/selftests/mm/memfd_secret.c b/tools/testing/se= lftests/mm/memfd_secret.c > index 9b298f6a04b3..9a0597310a76 100644 > --- a/tools/testing/selftests/mm/memfd_secret.c > +++ b/tools/testing/selftests/mm/memfd_secret.c > @@ -20,6 +20,7 @@ > #include > #include > #include > +#include > > #include "../kselftest.h" > > @@ -83,6 +84,45 @@ static void test_mlock_limit(int fd) > pass("mlock limit is respected\n"); > } > > +static void test_vmsplice(int fd, const char *desc) > +{ > + ssize_t transferred; > + struct iovec iov; > + int pipefd[2]; > + char *mem; > + > + if (pipe(pipefd)) { > + fail("pipe failed: %s\n", strerror(errno)); > + return; > + } > + > + mem =3D mmap(NULL, page_size, prot, mode, fd, 0); > + if (mem =3D=3D MAP_FAILED) { > + fail("Unable to mmap secret memory\n"); > + goto close_pipe; > + } > + > + /* > + * vmsplice() may use GUP-fast, which must also fail. Prefault th= e > + * page table, so GUP-fast could find it. > + */ > + memset(mem, PATTERN, page_size); Shouldn't the non-prefault case be tested as well? Thanks, Miklos