diff mbox series

[V2,10/10] selftests: vm: remove dependecy from internal kernel macros

Message ID 20220119101531.2850400-11-usama.anjum@collabora.com (mailing list archive)
State Accepted
Commit 681696862bc1823595c05960a83766d1aa965c17
Headers show
Series selftests: Fix separate output directory builds | expand

Commit Message

Muhammad Usama Anjum Jan. 19, 2022, 10:15 a.m. UTC
The defination of swap() is used from kernel's internal header when this
test is built in source tree. The build fails when this test is built
out of source tree as defination of swap() isn't found. Selftests
shouldn't depend on kernel's internal header files. They can only depend
on uapi header files. Add the defination of swap() to fix the build
error:

	gcc -Wall  -I/linux_mainline2/build/usr/include -no-pie    userfaultfd.c -lrt -lpthread -o /linux_mainline2/build/kselftest/vm/userfaultfd
	userfaultfd.c: In function ‘userfaultfd_stress’:
	userfaultfd.c:1530:3: warning: implicit declaration of function ‘swap’; did you mean ‘swab’? [-Wimplicit-function-declaration]
	 1530 |   swap(area_src, area_dst);
	      |   ^~~~
	      |   swab
	/usr/bin/ld: /tmp/cclUUH7V.o: in function `userfaultfd_stress':
	userfaultfd.c:(.text+0x4d64): undefined reference to `swap'
	/usr/bin/ld: userfaultfd.c:(.text+0x4d82): undefined reference to `swap'
	collect2: error: ld returned 1 exit status

Fixes: 2c769ed7137a ("tools/testing/selftests/vm/userfaultfd.c: use swap() to make code cleaner")
Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
---
 tools/testing/selftests/vm/userfaultfd.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

Alistair Popple Jan. 20, 2022, 1:20 a.m. UTC | #1
Reviewed-by: Alistair Popple <apopple@nvidia.com>

On Wednesday, 19 January 2022 9:15:31 PM AEDT Muhammad Usama Anjum wrote:
> The defination of swap() is used from kernel's internal header when this
> test is built in source tree. The build fails when this test is built
> out of source tree as defination of swap() isn't found. Selftests
> shouldn't depend on kernel's internal header files. They can only depend
> on uapi header files. Add the defination of swap() to fix the build
> error:
> 
> 	gcc -Wall  -I/linux_mainline2/build/usr/include -no-pie    userfaultfd.c -lrt -lpthread -o /linux_mainline2/build/kselftest/vm/userfaultfd
> 	userfaultfd.c: In function ‘userfaultfd_stress’:
> 	userfaultfd.c:1530:3: warning: implicit declaration of function ‘swap’; did you mean ‘swab’? [-Wimplicit-function-declaration]
> 	 1530 |   swap(area_src, area_dst);
> 	      |   ^~~~
> 	      |   swab
> 	/usr/bin/ld: /tmp/cclUUH7V.o: in function `userfaultfd_stress':
> 	userfaultfd.c:(.text+0x4d64): undefined reference to `swap'
> 	/usr/bin/ld: userfaultfd.c:(.text+0x4d82): undefined reference to `swap'
> 	collect2: error: ld returned 1 exit status
> 
> Fixes: 2c769ed7137a ("tools/testing/selftests/vm/userfaultfd.c: use swap() to make code cleaner")
> Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
> ---
>  tools/testing/selftests/vm/userfaultfd.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/tools/testing/selftests/vm/userfaultfd.c b/tools/testing/selftests/vm/userfaultfd.c
> index d3fd24f9fae8..d2480ab93037 100644
> --- a/tools/testing/selftests/vm/userfaultfd.c
> +++ b/tools/testing/selftests/vm/userfaultfd.c
> @@ -119,6 +119,9 @@ struct uffd_stats {
>  				 ~(unsigned long)(sizeof(unsigned long long) \
>  						  -  1)))
>  
> +#define swap(a, b) \
> +	do { typeof(a) __tmp = (a); (a) = (b); (b) = __tmp; } while (0)
> +
>  const char *examples =
>      "# Run anonymous memory test on 100MiB region with 99999 bounces:\n"
>      "./userfaultfd anon 100 99999\n\n"
>
diff mbox series

Patch

diff --git a/tools/testing/selftests/vm/userfaultfd.c b/tools/testing/selftests/vm/userfaultfd.c
index d3fd24f9fae8..d2480ab93037 100644
--- a/tools/testing/selftests/vm/userfaultfd.c
+++ b/tools/testing/selftests/vm/userfaultfd.c
@@ -119,6 +119,9 @@  struct uffd_stats {
 				 ~(unsigned long)(sizeof(unsigned long long) \
 						  -  1)))
 
+#define swap(a, b) \
+	do { typeof(a) __tmp = (a); (a) = (b); (b) = __tmp; } while (0)
+
 const char *examples =
     "# Run anonymous memory test on 100MiB region with 99999 bounces:\n"
     "./userfaultfd anon 100 99999\n\n"