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 E7C84C54E58 for ; Tue, 26 Mar 2024 06:18:44 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 66B126B009C; Tue, 26 Mar 2024 02:18:44 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 619906B009D; Tue, 26 Mar 2024 02:18:44 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4E18E6B009E; Tue, 26 Mar 2024 02:18:44 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 3B8DC6B009C for ; Tue, 26 Mar 2024 02:18:44 -0400 (EDT) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 0815012068E for ; Tue, 26 Mar 2024 06:18:44 +0000 (UTC) X-FDA: 81938186568.30.9BC10E3 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf02.hostedemail.com (Postfix) with ESMTP id 5722480007 for ; Tue, 26 Mar 2024 06:18:42 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=OulhAaXF; spf=pass (imf02.hostedemail.com: domain of rppt@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=rppt@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1711433922; a=rsa-sha256; cv=none; b=Y1jgN3CcYe5ahDL7PcrTBCw6bzYhLXF/AON5vJMEw/Et7svV/wmA50ihkLV18hWVM/HlM0 StjquejrKp3aPQpnW+1Wb9vT2qqLlO51BVposD83oRDu/jTC4bASSO9iSLLzTokD2e76re MuklYO7to5TUX24F76i4Nv67pJBGt/Q= ARC-Authentication-Results: i=1; imf02.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=OulhAaXF; spf=pass (imf02.hostedemail.com: domain of rppt@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=rppt@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1711433922; 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=zD0trj+xhIvtVKSC+Bx3IimhFm2+uUvdOK6LDKSipU8=; b=jd58F0p+DnPsvq68zmXoC1mUNH7VdRnFdSUhHKesiOrnOiKvt/D/gs50oWlXIXRo9MiHJI 8pgK5BYjHI+Uju+6zd9glDmQbmp6aeioKR2AGXAtTnCD2pCnbzpIbFrXvFjGgUxt2Zx9kT 3T01sOWnhozaVZcVM1Elu1tkrdhsBFg= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 605D2611B6; Tue, 26 Mar 2024 06:18:41 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1EF18C433C7; Tue, 26 Mar 2024 06:18:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1711433921; bh=20SMIDLNszlVzxVf+DUT9GZu3oMP/FksgjEbZSI1CIE=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=OulhAaXFJkebcE/8sVZOC/PnYaxoIt62k9ndJICWXDKZiu5dRnr3Ql3YISGgMrQgf 7nnJsKXYnXaTiM1YdU13eG+s0NUwnQAWSDsme+8KoKP3DYq/uSBNyihN3l9qIqsz86 W1wu9fZF5ScOo20P9E/XUTFKmXugQ8KMelS6ZfFOgXQ9qJkB2pR+bwRUV1rN+2SrVe j3O7B9M3bWWTqmf3PEuldAT2nV+LKV1eTzoLFq0Py2IdFOhD7migDkHNKco/ERsV8+ VC4OgsPqKhTn/H1NwbB1YqCqSnECxNv/D7iKjv3sb1OWpbyTrU99gK0hdqGm8pqrA5 zdIiDi+k8A/Vg== Date: Tue, 26 Mar 2024 08:17:59 +0200 From: Mike Rapoport To: David Hildenbrand Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, Andrew Morton , Miklos Szeredi , Lorenzo Stoakes , xingwei lee , yue sun Subject: Re: [PATCH v1 2/3] selftests/memfd_secret: add vmsplice() test Message-ID: References: <20240325134114.257544-1-david@redhat.com> <20240325134114.257544-3-david@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20240325134114.257544-3-david@redhat.com> X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: 5722480007 X-Stat-Signature: ijrra5bb5w3kd8gf8bf1zcrmqibjn5bg X-Rspam-User: X-HE-Tag: 1711433922-984264 X-HE-Meta: U2FsdGVkX1+2fvGJElDp3SoSh3Lw+ufBVTwxfoh5P3JPzxfMTAXKlnoTJz53SJGGF4X37VvbEDr4Egcmc6VNCvN5sb27T9XO3yDHValaPMsQUDYuD2xBWvep6u1kanpQkOTVsEaPVCZE7fEwXJ2r5I7a8UTChuBhqyyPFsb1UvL5nNGNT1x4CpZYZL2u1B30CUQlE44rlDHsFoJEjE/mB67zgMeMvaw3pOhBnNdDvCoYztu2JWCxh6YAiZeemHWXfsuYDI2nue3MGu93H1LY1cpY0WNEbPrPel+e8O0deIC2xypEqq1wkM6pXZR9XUA0rGxJVKyzThEBbU2SCagR7ytGtjFTCnhIrQNCb3aNmdA2tPsedRRYJFSzDozxLV+muPNiu26D7LuaoUX9ZttdB5T066FNztaPdI7E3JnrVlDDllsWPoqYP2x1onYgoytM9SpH+kL3nP8wGAuoDNog+bR1kuo0dNZNtmkTgFXRUnk39FTWWi9zXoSOwuKZVnqn9d82kMwjL7eBx/96oSgh6SA0Fq5jb6fp04MG+b4sH6tjkoQWG/lRm9GWdT8OcmLVX3fFadfAyrsRYJpp+zFD7tzN9wG8d6Kw1lk6U2faeSVDUiTtZZn0c48057Js+vJWDP9OguThXc/UzSEKei81FP+RnfcPNivLYLZB8QR4zAwrT72yO35I+UL1Aj/wA6kmWNBRfHLuYlho5ABLjNcub5PQmpxTWl576F/ZB9EXfcmmUsloyc179xV4Dhky+heXXq5fu1+XsWT7fmcv3sYMMhYu6dYg5cZt3bKCXruRHb6pcW3UhYXbmIC6PbvGMqSk01g8XWbUkdfwAT/dqWt1CQOl7Hai5pZq7Vin3TI1K/MEt4M7kVAB5mvTsERlrzVr4mDlEwkExp79DDSS3zLIRCkXqNxu8j3/YLHbZTvSaqh4vxCG9f06iMZ3NWQFl62niExwImkMIxzNdJlR6te CcsZmA1G tncIBsfKxk3tL8h4RSBCQb3DnDugreeu0w4JneTEZbOSwXc+bijzaVj53MIAeh24Npj4FkehXtJUBzQnoZhU/FO8Fe4LQAxtpdagabqKpBNrxsoxCSfqNJYFjpjmoYDB1843UWg6gY6UA7tkwKPVkXolyTISAvdsfeX9lDGSFJPHG+wpEryl6QlmtnKeqmxW/LFxhL5MHilvFPQJL0EsNjJpFSlq8+s9ilLyyH1hkGMZ3ZJ9ZMLi+0c1JYkPLA02A/jDWGOtGZcfBnI+qTlgpMLwRrPTtdL7j4vkeBN8UZNPFBMUWYhvMpIbq8axYbUQkRsvfwPw+wa6L30pO1U5a5po/9A== 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: Hi David, On Mon, Mar 25, 2024 at 02:41:13PM +0100, David Hildenbrand wrote: > Let's add a simple reproducer for a scneario 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. > > Perform the ftruncate() only once, and check the return value. > > For some reason, vmsplice() reliably fails (making the test succeed) when > we move the test_vmsplice() call after test_process_vm_read() / > test_ptrace(). That's because ftruncate() call was in test_remote_access() and you need it to mmap secretmem. > Properly cleaning up in test_remote_access(), which is not > part of this change, won't change that behavior. Therefore, run the > vmsplice() test for now first -- something is a bit off once we involve > fork(). > > [1] https://lkml.kernel.org/r/CAJfpegt3UCsMmxd0taOY11Uaw5U=eS1fE5dn0wZX3HF0oy8-oQ@mail.gmail.com > > Signed-off-by: David Hildenbrand > --- > tools/testing/selftests/mm/memfd_secret.c | 44 +++++++++++++++++++++-- > 1 file changed, 42 insertions(+), 2 deletions(-) > > diff --git a/tools/testing/selftests/mm/memfd_secret.c b/tools/testing/selftests/mm/memfd_secret.c > index 9b298f6a04b3..0acbdcf8230e 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,43 @@ static void test_mlock_limit(int fd) > pass("mlock limit is respected\n"); > } > > +static void test_vmsplice(int fd) > +{ > + ssize_t transferred; > + struct iovec iov; > + int pipefd[2]; > + char *mem; > + > + if (pipe(pipefd)) { > + fail("pipe failed: %s\n", strerror(errno)); > + return; > + } > + > + mem = mmap(NULL, page_size, prot, mode, fd, 0); > + if (mem == MAP_FAILED) { > + fail("Unable to mmap secret memory\n"); > + goto close_pipe; > + } > + > + /* > + * vmsplice() may use GUP-fast, which must also fail. Prefault the > + * page table, so GUP-fast could find it. > + */ > + memset(mem, PATTERN, page_size); > + > + iov.iov_base = mem; > + iov.iov_len = page_size; > + transferred = vmsplice(pipefd[1], &iov, 1, 0); > + > + ksft_test_result(transferred < 0 && errno == EFAULT, > + "vmsplice is blocked as expected\n"); The same message will be printed on success and on failure. I think if (transferred < 0 && errno == EFAULT) pass("vmsplice is blocked as expected"); else fail("vmsplice: unexpected memory acccess"); is clearer than feeding different strings to ksft_test_result(). Other than that Reviewed-by: Mike Rapoport (IBM) > + > + munmap(mem, page_size); > +close_pipe: > + close(pipefd[0]); > + close(pipefd[1]); > +} -- Sincerely yours, Mike.