lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-Id: <20180614053905.GA31020@rapoport-lnx>
Date:   Thu, 14 Jun 2018 08:39:05 +0300
From:   Mike Rapoport <rppt@...ux.vnet.ibm.com>
To:     "Shuah Khan (Samsung OSG)" <shuah@...nel.org>
Cc:     arnd@...db.de, akpm@...ux-foundation.org, zhijianx.li@...el.com,
        aneesh.kumar@...ux.vnet.ibm.com, aarcange@...hat.com,
        prakash.sangappa@...cle.com, linux-kselftest@...r.kernel.org,
        linux-kernel@...r.kernel.org
Subject: Re: [PATCH] selftests: vm: return Kselftest Skip code for skipped
 tests

On Wed, Jun 13, 2018 at 09:35:57PM -0600, Shuah Khan (Samsung OSG) wrote:
> When vm test is skipped because of unmet dependencies and/or unsupported
> configuration, it exits with error which is treated as a fail by the
> Kselftest framework. This leads to false negative result even when the
> test could not be run.
> 
> Change it to return kselftest skip code when a test gets skipped to
> clearly report that the test could not be run.
> 
> Kselftest framework SKIP code is 4 and the framework prints appropriate
> messages to indicate that the test is skipped.
> 
> Signed-off-by: Shuah Khan (Samsung OSG) <shuah@...nel.org>

For the userfaultfd test
 
Acked-by: Mike Rapoport <rppt@...ux.vnet.ibm.com>

> ---
>  tools/testing/selftests/vm/compaction_test.c |  4 +++-
>  tools/testing/selftests/vm/mlock2-tests.c    | 12 +++++++-----
>  tools/testing/selftests/vm/run_vmtests       |  5 ++++-
>  tools/testing/selftests/vm/userfaultfd.c     |  4 +++-
>  4 files changed, 17 insertions(+), 8 deletions(-)
> 
> diff --git a/tools/testing/selftests/vm/compaction_test.c b/tools/testing/selftests/vm/compaction_test.c
> index 1097f04e4d80..bcec71250873 100644
> --- a/tools/testing/selftests/vm/compaction_test.c
> +++ b/tools/testing/selftests/vm/compaction_test.c
> @@ -16,6 +16,8 @@
>  #include <unistd.h>
>  #include <string.h>
> 
> +#include "../kselftest.h"
> +
>  #define MAP_SIZE 1048576
> 
>  struct map_list {
> @@ -169,7 +171,7 @@ int main(int argc, char **argv)
>  		printf("Either the sysctl compact_unevictable_allowed is not\n"
>  		       "set to 1 or couldn't read the proc file.\n"
>  		       "Skipping the test\n");
> -		return 0;
> +		return KSFT_SKIP;
>  	}
> 
>  	lim.rlim_cur = RLIM_INFINITY;
> diff --git a/tools/testing/selftests/vm/mlock2-tests.c b/tools/testing/selftests/vm/mlock2-tests.c
> index 4997b9222cfa..637b6d0ac0d0 100644
> --- a/tools/testing/selftests/vm/mlock2-tests.c
> +++ b/tools/testing/selftests/vm/mlock2-tests.c
> @@ -9,6 +9,8 @@
>  #include <stdbool.h>
>  #include "mlock2.h"
> 
> +#include "../kselftest.h"
> +
>  struct vm_boundaries {
>  	unsigned long start;
>  	unsigned long end;
> @@ -303,7 +305,7 @@ static int test_mlock_lock()
>  	if (mlock2_(map, 2 * page_size, 0)) {
>  		if (errno == ENOSYS) {
>  			printf("Cannot call new mlock family, skipping test\n");
> -			_exit(0);
> +			_exit(KSFT_SKIP);
>  		}
>  		perror("mlock2(0)");
>  		goto unmap;
> @@ -412,7 +414,7 @@ static int test_mlock_onfault()
>  	if (mlock2_(map, 2 * page_size, MLOCK_ONFAULT)) {
>  		if (errno == ENOSYS) {
>  			printf("Cannot call new mlock family, skipping test\n");
> -			_exit(0);
> +			_exit(KSFT_SKIP);
>  		}
>  		perror("mlock2(MLOCK_ONFAULT)");
>  		goto unmap;
> @@ -425,7 +427,7 @@ static int test_mlock_onfault()
>  	if (munlock(map, 2 * page_size)) {
>  		if (errno == ENOSYS) {
>  			printf("Cannot call new mlock family, skipping test\n");
> -			_exit(0);
> +			_exit(KSFT_SKIP);
>  		}
>  		perror("munlock()");
>  		goto unmap;
> @@ -457,7 +459,7 @@ static int test_lock_onfault_of_present()
>  	if (mlock2_(map, 2 * page_size, MLOCK_ONFAULT)) {
>  		if (errno == ENOSYS) {
>  			printf("Cannot call new mlock family, skipping test\n");
> -			_exit(0);
> +			_exit(KSFT_SKIP);
>  		}
>  		perror("mlock2(MLOCK_ONFAULT)");
>  		goto unmap;
> @@ -583,7 +585,7 @@ static int test_vma_management(bool call_mlock)
>  	if (call_mlock && mlock2_(map, 3 * page_size, MLOCK_ONFAULT)) {
>  		if (errno == ENOSYS) {
>  			printf("Cannot call new mlock family, skipping test\n");
> -			_exit(0);
> +			_exit(KSFT_SKIP);
>  		}
>  		perror("mlock(ONFAULT)\n");
>  		goto out;
> diff --git a/tools/testing/selftests/vm/run_vmtests b/tools/testing/selftests/vm/run_vmtests
> index 22d564673830..88cbe5575f0c 100755
> --- a/tools/testing/selftests/vm/run_vmtests
> +++ b/tools/testing/selftests/vm/run_vmtests
> @@ -2,6 +2,9 @@
>  # SPDX-License-Identifier: GPL-2.0
>  #please run as root
> 
> +# Kselftest framework requirement - SKIP code is 4.
> +ksft_skip=4
> +
>  mnt=./huge
>  exitcode=0
> 
> @@ -36,7 +39,7 @@ if [ -n "$freepgs" ] && [ -n "$hpgsize_KB" ]; then
>  		echo $(( $lackpgs + $nr_hugepgs )) > /proc/sys/vm/nr_hugepages
>  		if [ $? -ne 0 ]; then
>  			echo "Please run this test as root"
> -			exit 1
> +			exit $ksft_skip
>  		fi
>  		while read name size unit; do
>  			if [ "$name" = "HugePages_Free:" ]; then
> diff --git a/tools/testing/selftests/vm/userfaultfd.c b/tools/testing/selftests/vm/userfaultfd.c
> index de2f9ec8a87f..7b8171e3128a 100644
> --- a/tools/testing/selftests/vm/userfaultfd.c
> +++ b/tools/testing/selftests/vm/userfaultfd.c
> @@ -69,6 +69,8 @@
>  #include <setjmp.h>
>  #include <stdbool.h>
> 
> +#include "../kselftest.h"
> +
>  #ifdef __NR_userfaultfd
> 
>  static unsigned long nr_cpus, nr_pages, nr_pages_per_cpu, page_size;
> @@ -1322,7 +1324,7 @@ int main(int argc, char **argv)
>  int main(void)
>  {
>  	printf("skip: Skipping userfaultfd test (missing __NR_userfaultfd)\n");
> -	return 0;
> +	return KSFT_SKIP;
>  }
> 
>  #endif /* __NR_userfaultfd */
> -- 
> 2.17.0
> 

-- 
Sincerely yours,
Mike.

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ