All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christian Brauner <christian@brauner.io>
To: Greg KH <gregkh@linuxfoundation.org>
Cc: tkjos@android.com, devel@driverdev.osuosl.org,
	linux-kernel@vger.kernel.org, joel@joelfernandes.org,
	arve@android.com, maco@android.com, tkjos@google.com
Subject: Re: [PATCH] selftests: add binderfs selftests
Date: Wed, 16 Jan 2019 18:57:10 +0200	[thread overview]
Message-ID: <CA19B5F8-FEE9-4159-BA01-9C51B4DF97FA@brauner.io> (raw)
In-Reply-To: <20190116164219.GD5446@kroah.com>

On January 16, 2019 6:42:20 PM GMT+02:00, Greg KH <gregkh@linuxfoundation.org> wrote:
>On Wed, Jan 16, 2019 at 06:21:12PM +0200, Christian Brauner wrote:
>> On January 16, 2019 5:54:50 PM GMT+02:00, Greg KH
><gregkh@linuxfoundation.org> wrote:
>> >On Wed, Jan 16, 2019 at 02:19:03PM +0100, Christian Brauner wrote:
>> >> This adds the promised selftest for binderfs. It will verify the
>> >following
>> >> things:
>> >> - binderfs mounting works
>> >> - binder device allocation works
>> >> - performing a binder ioctl() request through a binderfs device
>works
>> >> - binder device removal works
>> >> - binder-control removal fails
>> >> - binderfs unmounting works
>> >> 
>> >> Cc: Todd Kjos <tkjos@google.com>
>> >> Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
>> >> ---
>> >>  tools/testing/selftests/Makefile              |   1 +
>> >>  .../selftests/filesystems/binderfs/.gitignore |   1 +
>> >>  .../selftests/filesystems/binderfs/Makefile   |   6 +
>> >>  .../filesystems/binderfs/binderfs_test.c      | 120
>> >++++++++++++++++++
>> >>  .../selftests/filesystems/binderfs/config     |   3 +
>> >>  5 files changed, 131 insertions(+)
>> >>  create mode 100644
>> >tools/testing/selftests/filesystems/binderfs/.gitignore
>> >>  create mode 100644
>> >tools/testing/selftests/filesystems/binderfs/Makefile
>> >>  create mode 100644
>> >tools/testing/selftests/filesystems/binderfs/binderfs_test.c
>> >>  create mode 100644
>> >tools/testing/selftests/filesystems/binderfs/config
>> >> 
>> >> diff --git a/tools/testing/selftests/Makefile
>> >b/tools/testing/selftests/Makefile
>> >> index 1a2bd15c5b6e..400ee81a3043 100644
>> >> --- a/tools/testing/selftests/Makefile
>> >> +++ b/tools/testing/selftests/Makefile
>> >> @@ -10,6 +10,7 @@ TARGETS += drivers/dma-buf
>> >>  TARGETS += efivarfs
>> >>  TARGETS += exec
>> >>  TARGETS += filesystems
>> >> +TARGETS += filesystems/binderfs
>> >>  TARGETS += firmware
>> >>  TARGETS += ftrace
>> >>  TARGETS += futex
>> >> diff --git
>a/tools/testing/selftests/filesystems/binderfs/.gitignore
>> >b/tools/testing/selftests/filesystems/binderfs/.gitignore
>> >> new file mode 100644
>> >> index 000000000000..8a5d9bf63dd4
>> >> --- /dev/null
>> >> +++ b/tools/testing/selftests/filesystems/binderfs/.gitignore
>> >> @@ -0,0 +1 @@
>> >> +binderfs_test
>> >> diff --git a/tools/testing/selftests/filesystems/binderfs/Makefile
>> >b/tools/testing/selftests/filesystems/binderfs/Makefile
>> >> new file mode 100644
>> >> index 000000000000..58cb659b56b4
>> >> --- /dev/null
>> >> +++ b/tools/testing/selftests/filesystems/binderfs/Makefile
>> >> @@ -0,0 +1,6 @@
>> >> +# SPDX-License-Identifier: GPL-2.0
>> >> +
>> >> +CFLAGS += -I../../../../../usr/include/
>> >> +TEST_GEN_PROGS := binderfs_test
>> >> +
>> >> +include ../../lib.mk
>> >> diff --git
>> >a/tools/testing/selftests/filesystems/binderfs/binderfs_test.c
>> >b/tools/testing/selftests/filesystems/binderfs/binderfs_test.c
>> >> new file mode 100644
>> >> index 000000000000..ca4d9b616e84
>> >> --- /dev/null
>> >> +++ b/tools/testing/selftests/filesystems/binderfs/binderfs_test.c
>> >> @@ -0,0 +1,120 @@
>> >> +// SPDX-License-Identifier: GPL-2.0
>> >> +
>> >> +#define _GNU_SOURCE
>> >> +#include <errno.h>
>> >> +#include <fcntl.h>
>> >> +#include <sched.h>
>> >> +#include <stdio.h>
>> >> +#include <stdlib.h>
>> >> +#include <string.h>
>> >> +#include <sys/ioctl.h>
>> >> +#include <sys/mount.h>
>> >> +#include <sys/stat.h>
>> >> +#include <sys/types.h>
>> >> +#include <unistd.h>
>> >> +#include <linux/android/binder.h>
>> >> +#include <linux/android/binderfs.h>
>> >> +#include "../../kselftest.h"
>> >> +
>> >> +int main(int argc, char *argv[])
>> >> +{
>> >> +	int fd, ret, saved_errno;
>> >> +	size_t len;
>> >> +	struct binderfs_device device = { 0 };
>> >> +	struct binder_version version = { 0 };
>> >> +
>> >> +	ret = unshare(CLONE_NEWNS);
>> >> +	if (ret < 0)
>> >> +		ksft_exit_fail_msg("%s - Failed to unshare mount namespace\n",
>> >> +				   strerror(errno));
>> >> +
>> >> +	ret = mount(NULL, "/", NULL, MS_REC | MS_PRIVATE, 0);
>> >> +	if (ret < 0)
>> >> +		ksft_exit_fail_msg("%s - Failed to mount / as private\n",
>> >> +				   strerror(errno));
>> >> +
>> >> +	ret = mkdir("/dev/binderfs", 0755);
>> >> +	if (ret < 0 && errno != EEXIST)
>> >> +		ksft_exit_fail_msg(
>> >> +			"%s - Failed to create binderfs mountpoint\n",
>> >> +			strerror(errno));
>> >> +
>> >> +	ret = mount(NULL, "/dev/binderfs", "binder", 0, 0);
>> >> +	if (ret < 0)
>> >> +		ksft_exit_fail_msg("%s - Failed to mount binderfs\n",
>> >> +				   strerror(errno));
>> >
>> >Can you check first to see if the kernel under test really even has
>> >binderfs in it?  If not, you need to just
>> 
>> Hm, I thought that's what the "config" file was for?
>> E.g. a conditional compile or is this just a hint to the
>> user what's needed to run the test?
>
>I do not know.  What happens if you try to run this test on a kernel
>without that config option?  Does it not work as the framework
>correctly
>detects this?

I did test and it worked fine but let me check by setting up a clean vm and retry.

>
>And new kernel self tests should cc: the ksefltest mailing list and the
>maintainer of that subsystem so that they can review the test for
>things
>like this.

Thanks, missed them in my Cc list.

Christian


  reply	other threads:[~2019-01-16 16:57 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-01-16 13:19 [PATCH] selftests: add binderfs selftests Christian Brauner
2019-01-16 15:54 ` Greg KH
2019-01-16 16:21   ` Christian Brauner
2019-01-16 16:42     ` Greg KH
2019-01-16 16:57       ` Christian Brauner [this message]
2019-01-16 22:12         ` Christian Brauner

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=CA19B5F8-FEE9-4159-BA01-9C51B4DF97FA@brauner.io \
    --to=christian@brauner.io \
    --cc=arve@android.com \
    --cc=devel@driverdev.osuosl.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=joel@joelfernandes.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=maco@android.com \
    --cc=tkjos@android.com \
    --cc=tkjos@google.com \
    /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.