diff mbox series

[v2,2/4] userfaultfd: selftest: Skip test if userfaultfd() syscall not supported

Message ID 20180803220046.4019-3-bauerman@linux.ibm.com
State New
Headers show
Series userfaultfd: selftest: Improve behavior with older kernels | expand

Commit Message

Thiago Jung Bauermann Aug. 3, 2018, 10 p.m. UTC
Since there's no point in doing anything in this case, immediately exit the
process.

And take the opportunity to improve the error message.

Before:

  # ./userfaultfd shmem 10 10
  nr_pages: 160, nr_pages_per_cpu: 40
  userfaultfd syscall not available in this kernel
  # echo $?
  1

After:

  # ./userfaultfd shmem 10 10
  nr_pages: 160, nr_pages_per_cpu: 40
  userfaultfd syscall not available in this kernel: Function not implemented
  # echo $?
  4

Suggested-by: Mike Rapoport <rppt@linux.vnet.ibm.com>
Signed-off-by: Thiago Jung Bauermann <bauerman@linux.ibm.com>
---
 tools/testing/selftests/vm/userfaultfd.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)


--
To unsubscribe from this list: send the line "unsubscribe linux-kselftest" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Mike Rapoport Aug. 7, 2018, 6:50 a.m. UTC | #1
On Fri, Aug 03, 2018 at 07:00:44PM -0300, Thiago Jung Bauermann wrote:
> Since there's no point in doing anything in this case, immediately exit the
> process.
> 
> And take the opportunity to improve the error message.
> 
> Before:
> 
>   # ./userfaultfd shmem 10 10
>   nr_pages: 160, nr_pages_per_cpu: 40
>   userfaultfd syscall not available in this kernel
>   # echo $?
>   1
> 
> After:
> 
>   # ./userfaultfd shmem 10 10
>   nr_pages: 160, nr_pages_per_cpu: 40
>   userfaultfd syscall not available in this kernel: Function not implemented
>   # echo $?
>   4
> 
> Suggested-by: Mike Rapoport <rppt@linux.vnet.ibm.com>
> Signed-off-by: Thiago Jung Bauermann <bauerman@linux.ibm.com>

Acked-by: Mike Rapoport <rppt@linux.vnet.ibm.com>

> ---
>  tools/testing/selftests/vm/userfaultfd.c | 8 +++++---
>  1 file changed, 5 insertions(+), 3 deletions(-)
> 
> diff --git a/tools/testing/selftests/vm/userfaultfd.c b/tools/testing/selftests/vm/userfaultfd.c
> index e4099afe7557..d728bd1cb33c 100644
> --- a/tools/testing/selftests/vm/userfaultfd.c
> +++ b/tools/testing/selftests/vm/userfaultfd.c
> @@ -636,9 +636,11 @@ static int userfaultfd_open(int features)
> 
>  	uffd = syscall(__NR_userfaultfd, O_CLOEXEC | O_NONBLOCK);
>  	if (uffd < 0) {
> -		fprintf(stderr,
> -			"userfaultfd syscall not available in this kernel\n");
> -		return 1;
> +		int errnum = errno;
> +
> +		perror("userfaultfd syscall not available in this kernel");
> +
> +		exit(errnum == ENOSYS ? KSFT_SKIP : 1);
>  	}
>  	uffd_flags = fcntl(uffd, F_GETFD, NULL);
>
diff mbox series

Patch

diff --git a/tools/testing/selftests/vm/userfaultfd.c b/tools/testing/selftests/vm/userfaultfd.c
index e4099afe7557..d728bd1cb33c 100644
--- a/tools/testing/selftests/vm/userfaultfd.c
+++ b/tools/testing/selftests/vm/userfaultfd.c
@@ -636,9 +636,11 @@  static int userfaultfd_open(int features)
 
 	uffd = syscall(__NR_userfaultfd, O_CLOEXEC | O_NONBLOCK);
 	if (uffd < 0) {
-		fprintf(stderr,
-			"userfaultfd syscall not available in this kernel\n");
-		return 1;
+		int errnum = errno;
+
+		perror("userfaultfd syscall not available in this kernel");
+
+		exit(errnum == ENOSYS ? KSFT_SKIP : 1);
 	}
 	uffd_flags = fcntl(uffd, F_GETFD, NULL);