All the mail mirrored from lore.kernel.org
 help / color / mirror / Atom feed
From: "Mickaël Salaün" <mic@digikod.net>
To: Kees Cook <keescook@chromium.org>
Cc: "Christian Brauner" <brauner@kernel.org>,
	"Jakub Kicinski" <kuba@kernel.org>,
	"Mark Brown" <broonie@kernel.org>,
	"Shengyu Li" <shengyu.li.evgeny@gmail.com>,
	"Shuah Khan" <shuah@kernel.org>,
	"David S . Miller" <davem@davemloft.net>,
	"Günther Noack" <gnoack@google.com>,
	"Will Drewry" <wad@chromium.org>,
	"kernel test robot" <oliver.sang@intel.com>,
	linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org
Subject: Re: [PATCH v1 5/5] selftests/harness: Fix vfork() side effects and uncaught errors
Date: Mon, 29 Apr 2024 14:39:17 +0200	[thread overview]
Message-ID: <20240429.aedish4oKoov@digikod.net> (raw)
In-Reply-To: <202404261245.DC9A268FF@keescook>

On Fri, Apr 26, 2024 at 12:47:16PM -0700, Kees Cook wrote:
> On Fri, Apr 26, 2024 at 07:22:52PM +0200, Mickaël Salaün wrote:
> > Setting the time namespace with CLONE_NEWTIME returns -EUSERS if the
> > calling thread shares memory with another thread (because of the shared
> > vDSO), which is the case when it is created with vfork().
> > 
> > Fix pidfd_setns_test by replacing test harness's vfork() call with a
> > clone3() call with CLONE_VFORK, and an explicit sharing of the
> > __test_metadata and self objects.
> > 
> > Replace _metadata->teardown_parent with a new FIXTURE_TEARDOWN_PARENT()
> > helper that can replace FIXTURE_TEARDOWN().  This is a cleaner approach
> > and it enables to selectively share the fixture data between the child
> > process running tests and the parent process running the fixture
> > teardown.  This also avoids updating several tests to not rely on the
> > self object's copy-on-write property (e.g. storing the returned value of
> > a fork() call).
> > 
> > In the Landlock filesystem tests, don't allocate self->dir_path in the
> > test process because this would not be visible in the
> > FIXTURE_TEARDOWN_PARENT() process when not sharing the memory mapping.
> > 
> > Unconditionally share _metadata between all forked processes, which
> > enables to actually catch errors (which were previously ignored).
> > 
> > Replace a wrong EXPECT_GT(self->child_pid_exited, 0) with EXPECT_GE(),
> > which is now actually tested on the parent and child sides.
> > 
> > FIXTURE_VARIANT_ADD() doesn't need to be MAP_SHARED because it should
> > not be modified: it is already passed as const pointers to
> > FIXTURE_TEARDOWN().  Make that explicit by constifying the variants
> > declarations.
> 
> This patch makes at least(?) 3 different logical changes. Can you split
> these up a bit; I think it would make review a bit easier.

OK

> 
> I don't quite understand why the need for the explicit shared memory
> setup for the fixture metadata? Is this to deal with the vfork?

This change is needed for the parent process to check if any error
happened in the test child process during FIXTURE_SETUP(), TEST_F(), and
FIXTURE_TEARDOWN().  With vfork(), the sharing was implicit between the
parent and the child, but without sharing the full memory mapping we
need to MAP_SHARE it explicitly.

      reply	other threads:[~2024-04-29 12:39 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-26 17:22 [PATCH v1 0/5] Fix Kselftest's vfork() side effects Mickaël Salaün
2024-04-26 17:22 ` [PATCH v1 1/5] selftests/pidfd: Fix config for pidfd_setns_test Mickaël Salaün
2024-04-26 19:37   ` Kees Cook
2024-04-26 17:22 ` [PATCH v1 2/5] selftests/landlock: Fix FS tests when run on a private mount point Mickaël Salaün
2024-04-26 19:38   ` Kees Cook
2024-04-29 12:39     ` Mickaël Salaün
2024-04-26 17:22 ` [PATCH v1 3/5] selftests/harness: Fix fixture teardown Mickaël Salaün
2024-04-26 19:40   ` Kees Cook
2024-04-26 17:22 ` [PATCH v1 4/5] selftests/harness: Fix interleaved scheduling leading to race conditions Mickaël Salaün
2024-04-26 17:22 ` [PATCH v1 5/5] selftests/harness: Fix vfork() side effects and uncaught errors Mickaël Salaün
2024-04-26 19:47   ` Kees Cook
2024-04-29 12:39     ` Mickaël Salaün [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240429.aedish4oKoov@digikod.net \
    --to=mic@digikod.net \
    --cc=brauner@kernel.org \
    --cc=broonie@kernel.org \
    --cc=davem@davemloft.net \
    --cc=gnoack@google.com \
    --cc=keescook@chromium.org \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=oliver.sang@intel.com \
    --cc=shengyu.li.evgeny@gmail.com \
    --cc=shuah@kernel.org \
    --cc=wad@chromium.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.