On January 16, 2019 5:54:50 PM GMT+02:00, Greg KH <gregkh@xxxxxxxxxxxxxxxxxxx> 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@xxxxxxxxxx> >> Signed-off-by: Christian Brauner <christian.brauner@xxxxxxxxxx> >> --- >> 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? Thanks! Christian Christian abort the test, not fail it, >so as to allow newer versions of kselftests to run on older kernels. > >thanks, > >greg k-h _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel