[LTP] [PATCH v5 5/6] syscalls: added memfd_create dir and memfd_create/memfd_create01.c

Jakub Raček jracek@redhat.com
Fri Mar 24 16:42:35 CET 2017


Hi,

thank you for the reviews. I learned a lot from that.

I'm also glad it finally made it through.

Best regards,

Jakub Racek


On 03/24/2017 04:26 PM, Cyril Hrubis wrote:
> Hi!
> Patchset pushed with cosmetic chnages to this patch (see diff below),
> thanks.
>
> diff --git a/testcases/kernel/syscalls/memfd_create/memfd_create01.c b/testcases/kernel/syscalls/memfd_create/memfd_create01.c
> index c181fe6..04a5f4f 100644
> --- a/testcases/kernel/syscalls/memfd_create/memfd_create01.c
> +++ b/testcases/kernel/syscalls/memfd_create/memfd_create01.c
> @@ -75,7 +75,7 @@ static void test_seal_write(int fd)
>  	CHECK_MFD_NON_WRITEABLE(fd);
>  	CHECK_MFD_SHRINKABLE(fd);
>  	CHECK_MFD_GROWABLE(fd);
> -	CHECK_NON_GROWABLE_BY_WRITE(fd);
> +	CHECK_MFD_NON_GROWABLE_BY_WRITE(fd);
>  }
>
> *** Added MFD here just for consistency
>
>  /*
> @@ -109,7 +109,7 @@ static void test_seal_grow(int fd)
>  	CHECK_MFD_WRITEABLE(fd);
>  	CHECK_MFD_SHRINKABLE(fd);
>  	CHECK_MFD_NON_GROWABLE(fd);
> -	CHECK_NON_GROWABLE_BY_WRITE(fd);
> +	CHECK_MFD_NON_GROWABLE_BY_WRITE(fd);
>  }
>
>  /*
> @@ -126,7 +126,7 @@ static void test_seal_resize(int fd)
>  	CHECK_MFD_WRITEABLE(fd);
>  	CHECK_MFD_NON_SHRINKABLE(fd);
>  	CHECK_MFD_NON_GROWABLE(fd);
> -	CHECK_NON_GROWABLE_BY_WRITE(fd);
> +	CHECK_MFD_NON_GROWABLE_BY_WRITE(fd);
>  }
>
>  /*
> diff --git a/testcases/kernel/syscalls/memfd_create/memfd_create_common.c b/testcases/kernel/syscalls/memfd_create/memfd_create_common.c
> index 0c7143b..dfc75a8 100644
> --- a/testcases/kernel/syscalls/memfd_create/memfd_create_common.c
> +++ b/testcases/kernel/syscalls/memfd_create/memfd_create_common.c
> @@ -13,22 +13,22 @@
>   *
>   */
>
> - #define _GNU_SOURCE
> -
> - #include <sys/types.h>
> - #include <sys/syscall.h>
> - #include <sys/uio.h>
> - #include <lapi/fallocate.h>
> - #include <lapi/fcntl.h>
> - #include <lapi/memfd.h>
> - #include <errno.h>
> - #include <string.h>
> - #include <stdio.h>
> - #include <stdlib.h>
> - #include <unistd.h>
> -
> - #define TST_NO_DEFAULT_MAIN
> - #include <tst_test.h>
> +#define _GNU_SOURCE
> +
> +#include <sys/types.h>
> +#include <sys/syscall.h>
> +#include <sys/uio.h>
> +#include <lapi/fallocate.h>
> +#include <lapi/fcntl.h>
> +#include <lapi/memfd.h>
> +#include <errno.h>
> +#include <string.h>
> +#include <stdio.h>
> +#include <stdlib.h>
> +#include <unistd.h>
> +
> +#define TST_NO_DEFAULT_MAIN
> +#include <tst_test.h>
>
> *** Removed spaces before #
>
>  #include "linux_syscall_numbers.h"
>
> @@ -146,7 +146,8 @@ void check_mfd_fail_new(const char *filename, const int lineno,
>  	fd = sys_memfd_create(name, flags);
>  	if (fd >= 0) {
>  		safe_close(filename, lineno, NULL, fd);
> -		tst_brk(TFAIL, "memfd_create(%s, %d) succeeded unexpectedly",
> +		tst_brk_(filename, lineno, TFAIL,
> +			 "memfd_create(%s, %d) succeeded unexpectedly",
>  			name, flags);
>  	}
>
> *** Added forgotten filename and lineno to the message
>
> @@ -172,6 +173,7 @@ void check_mmap_fail(const char *file, const int lineno, void *addr,
>  		size_t length, int prot, int flags, int fd, off_t offset)
>  {
>  	if (mmap(addr, length, prot, flags, fd, offset) != MAP_FAILED) {
> +		safe_munmap(file, lineno, NULL, addr, length);
>  		tst_res_(file, lineno, TFAIL,
>  			"mmap(%p, %zu, %i, %i, %i, %zi) succeeded unexpectedly",
>  			addr, length, prot, flags, fd, offset);
> @@ -191,6 +193,19 @@ void check_munmap(const char *file, const int lineno, void *p, size_t length)
>  	tst_res_(file, lineno, TPASS, "munmap(%p, %ld) succeeded", p, length);
>  }
>
> *** Added forgotten munmap
>
> +void check_mfd_has_seals(const char *file, const int lineno, int fd, int seals)
> +{
> +	int ret = SAFE_FCNTL((fd), F_GET_SEALS);
> +	if (ret	!= seals) {
> +		tst_brk_(file, lineno, TFAIL,
> +			"fd %d doesn't have expected seals (%d expected %d)",
> +			fd, ret, seals);
> +	}
> +
> +	tst_res_(file, lineno, TPASS,
> +		 "fd %d has expected seals (%d)", fd, seals);
> +}
>
> *** Changed this macro for a function and make it print the values of seals
>
>  void check_mprotect(const char *file, const int lineno, void *addr,
>  		size_t length, int prot)
>  {
> @@ -297,7 +312,7 @@ void check_mfd_writeable(const char *filename, const int lineno, int fd)
>  	/* verify write() succeeds */
>  	safe_write(filename, lineno, NULL, 1, fd, "\0\0\0\0", 4);
>  	tst_res_(filename, lineno, TPASS, "write(%d, %s, %d) succeeded", fd,
> -		"\0\0\0\0", 4);
> +		"\\0\\0\\0\\0", 4);
>
> ** Changed this to print literal '\0\0\0\0' instead of random pointer
>
>  	/* verify PROT_READ | PROT_WRITE is allowed */
>  	p = check_mmap(filename, lineno, NULL, MFD_DEF_SIZE,
> diff --git a/testcases/kernel/syscalls/memfd_create/memfd_create_common.h b/testcases/kernel/syscalls/memfd_create/memfd_create_common.h
> index 2705375..6329ac3 100644
> --- a/testcases/kernel/syscalls/memfd_create/memfd_create_common.h
> +++ b/testcases/kernel/syscalls/memfd_create/memfd_create_common.h
> @@ -43,13 +43,7 @@
>  	check_munmap(__FILE__, __LINE__, (p), (length))
>
>  #define CHECK_MFD_HAS_SEALS(fd, seals) \
> -	do { \
> -		if (SAFE_FCNTL((fd), F_GET_SEALS) != (seals)) { \
> -			tst_brk(TFAIL, "fd %d doesn't have expected seals", \
> -				(fd)); \
> -		} \
> -		tst_res(TPASS, "fd %d has expected seals", (fd)); \
> -	} while (0)
> +	check_mfd_has_seals(__FILE__, __LINE__, (fd), (seals));
>
>  #define CHECK_MFD_ADD_SEALS(fd, seals) \
>  	({int r = SAFE_FCNTL((fd), F_ADD_SEALS, (seals)); \
> @@ -92,7 +86,7 @@
>  #define CHECK_MFD_GROWABLE_BY_WRITE(fd) \
>  	check_mfd_growable_by_write(__FILE__, __LINE__, (fd))
>
> -#define CHECK_NON_GROWABLE_BY_WRITE(fd) \
> +#define CHECK_MFD_NON_GROWABLE_BY_WRITE(fd) \
>  	check_mfd_non_growable_by_write(__FILE__, __LINE__, (fd))
>
>  void assert_have_memfd_create(const char *filename, const int lineno);
> @@ -119,6 +113,8 @@ void check_mmap_fail(const char *file, const int lineno, void *addr,
>
>  void check_munmap(const char *file, const int lineno, void *p, size_t length);
>
> +void check_mfd_has_seals(const char *file, const int lineno, int fd, int seals);
> +
>  void check_mprotect(const char *file, const int lineno, void *addr,
>  		size_t length, int prot);
>
>

-- 
Regards,
     Jakub


More information about the ltp mailing list