[17/34] selftests: net: Fix incorrect kernel headers search path

Message ID 20230127135755.79929-18-mathieu.desnoyers@efficios.com
State New
Headers
Series selftests: Fix incorrect kernel headers search path |

Commit Message

Mathieu Desnoyers Jan. 27, 2023, 1:57 p.m. UTC
  Use $(KHDR_INCLUDES) as lookup path for kernel headers. This prevents
building against kernel headers from the build environment in scenarios
where kernel headers are installed into a specific output directory
(O=...).

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Cc: Shuah Khan <shuah@kernel.org>
Cc: linux-kselftest@vger.kernel.org
Cc: Ingo Molnar <mingo@redhat.com>
Cc: <stable@vger.kernel.org>    [5.18+]
---
 tools/testing/selftests/net/Makefile             | 2 +-
 tools/testing/selftests/net/bpf/Makefile         | 2 +-
 tools/testing/selftests/net/mptcp/Makefile       | 2 +-
 tools/testing/selftests/net/openvswitch/Makefile | 2 +-
 4 files changed, 4 insertions(+), 4 deletions(-)
  

Comments

Matthieu Baerts Jan. 27, 2023, 4:21 p.m. UTC | #1
Hi Mathieu,

On 27/01/2023 14:57, Mathieu Desnoyers wrote:
> Use $(KHDR_INCLUDES) as lookup path for kernel headers. This prevents
> building against kernel headers from the build environment in scenarios
> where kernel headers are installed into a specific output directory
> (O=...).

Thank you for the patch!

> Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
> Cc: Shuah Khan <shuah@kernel.org>
> Cc: linux-kselftest@vger.kernel.org
> Cc: Ingo Molnar <mingo@redhat.com>
> Cc: <stable@vger.kernel.org>    [5.18+]

(It might be useful to add a "Fixes" tag as well to clearly indicate the
dependence with a specific commit and better understand the fix.)

(and add all the individual maintainers of the files you modify -- feel
free to use 'b4' to help you for this task ;-) )

(...)

> diff --git a/tools/testing/selftests/net/mptcp/Makefile b/tools/testing/selftests/net/mptcp/Makefile
> index 43a723626126..06bba013bcef 100644
> --- a/tools/testing/selftests/net/mptcp/Makefile
> +++ b/tools/testing/selftests/net/mptcp/Makefile
> @@ -2,7 +2,7 @@
>  
>  top_srcdir = ../../../../..
>  
> -CFLAGS =  -Wall -Wl,--no-as-needed -O2 -g -I$(top_srcdir)/usr/include $(KHDR_INCLUDES)
> +CFLAGS =  -Wall -Wl,--no-as-needed -O2 -g $(KHDR_INCLUDES)

I only looked at the modification here with MPTCP selftests and it looks
good to me. It makes sense because if KHDR_INCLUDES is not set, it will
be set later by lib.mk I suppose.

Just one small thing: I guess you can also remove "top_srcdir" variable
that is no longer used, right? I see that "lib.mk" uses a variable with
the same name but it overrides its value anyway. But it is likely I
missed something there :)

If indeed it is no longer needed, I guess a few Makefile can be adapted
according to:

  git grep top_srcdir -- tools/testing/selftests/*/

I guess most of these Makefile are very similar, no? For MPTCP, we
simply looked at what was done elsewhere :)

Cheers,
Matt
  
Mathieu Desnoyers Jan. 27, 2023, 4:42 p.m. UTC | #2
On 2023-01-27 11:21, Matthieu Baerts wrote:
> Hi Mathieu,
> 
> On 27/01/2023 14:57, Mathieu Desnoyers wrote:
>> Use $(KHDR_INCLUDES) as lookup path for kernel headers. This prevents
>> building against kernel headers from the build environment in scenarios
>> where kernel headers are installed into a specific output directory
>> (O=...).
> 
> Thank you for the patch!

You're welcome :)

> 
>> Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
>> Cc: Shuah Khan <shuah@kernel.org>
>> Cc: linux-kselftest@vger.kernel.org
>> Cc: Ingo Molnar <mingo@redhat.com>
>> Cc: <stable@vger.kernel.org>    [5.18+]
> 
> (It might be useful to add a "Fixes" tag as well to clearly indicate the
> dependence with a specific commit and better understand the fix.)

Just a bit of context: I found this problematic pattern in my own 
selftests (rseq and membarrier), and figured that it was an issue all 
across the board. I did an initial single-patch fix, and then split it 
up in 34 patches based on feedback from Shuah Khan.

I know it should have a Fixed ... tag, but I simply don't have time to 
do the historical investigation work for all the 34 patches form this 
patchset. Perhaps someone else is up to the task ?

> 
> (and add all the individual maintainers of the files you modify -- feel
> free to use 'b4' to help you for this task ;-) )

If this can be automated, then perhaps Shuah can use it to append the 
relevant information ?

> 
> (...)
> 
>> diff --git a/tools/testing/selftests/net/mptcp/Makefile b/tools/testing/selftests/net/mptcp/Makefile
>> index 43a723626126..06bba013bcef 100644
>> --- a/tools/testing/selftests/net/mptcp/Makefile
>> +++ b/tools/testing/selftests/net/mptcp/Makefile
>> @@ -2,7 +2,7 @@
>>   
>>   top_srcdir = ../../../../..
>>   
>> -CFLAGS =  -Wall -Wl,--no-as-needed -O2 -g -I$(top_srcdir)/usr/include $(KHDR_INCLUDES)
>> +CFLAGS =  -Wall -Wl,--no-as-needed -O2 -g $(KHDR_INCLUDES)
> 
> I only looked at the modification here with MPTCP selftests and it looks
> good to me. It makes sense because if KHDR_INCLUDES is not set, it will
> be set later by lib.mk I suppose.
> 
> Just one small thing: I guess you can also remove "top_srcdir" variable
> that is no longer used, right? I see that "lib.mk" uses a variable with
> the same name but it overrides its value anyway. But it is likely I
> missed something there :)
> 
> If indeed it is no longer needed, I guess a few Makefile can be adapted
> according to:
> 
>    git grep top_srcdir -- tools/testing/selftests/*/
> 

Yes, this should perhaps come as additional fixes on top of my series. I 
don't have time to do it myself though.

Anyone willing to contribute it ?

> I guess most of these Makefile are very similar, no? For MPTCP, we
> simply looked at what was done elsewhere :)

Yes, I did likewise.

Thanks for the feedback,

Mathieu

> 
> Cheers,
> Matt
  
Shuah Khan Jan. 30, 2023, 4:24 p.m. UTC | #3
On 1/27/23 06:57, Mathieu Desnoyers wrote:
> Use $(KHDR_INCLUDES) as lookup path for kernel headers. This prevents
> building against kernel headers from the build environment in scenarios
> where kernel headers are installed into a specific output directory
> (O=...).
> 
> Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
> Cc: Shuah Khan <shuah@kernel.org>
> Cc: linux-kselftest@vger.kernel.org
> Cc: Ingo Molnar <mingo@redhat.com>
> Cc: <stable@vger.kernel.org>    [5.18+]
> ---
>   tools/testing/selftests/net/Makefile             | 2 +-
>   tools/testing/selftests/net/bpf/Makefile         | 2 +-
>   tools/testing/selftests/net/mptcp/Makefile       | 2 +-
>   tools/testing/selftests/net/openvswitch/Makefile | 2 +-
>   4 files changed, 4 insertions(+), 4 deletions(-)
> 

Adding net maintainers:

Would you me to take this patch through kselftest tree? If you
decide to take this through yours:

Acked-by: Shuah Khan <skhan@linuxfoundation.org>

thanks,
-- Shuah
  

Patch

diff --git a/tools/testing/selftests/net/Makefile b/tools/testing/selftests/net/Makefile
index 3007e98a6d64..bab1222c7d50 100644
--- a/tools/testing/selftests/net/Makefile
+++ b/tools/testing/selftests/net/Makefile
@@ -2,7 +2,7 @@ 
 # Makefile for net selftests
 
 CFLAGS =  -Wall -Wl,--no-as-needed -O2 -g
-CFLAGS += -I../../../../usr/include/ $(KHDR_INCLUDES)
+CFLAGS += $(KHDR_INCLUDES)
 
 TEST_PROGS := run_netsocktests run_afpackettests test_bpf.sh netdevice.sh \
 	      rtnetlink.sh xfrm_policy.sh test_blackhole_dev.sh
diff --git a/tools/testing/selftests/net/bpf/Makefile b/tools/testing/selftests/net/bpf/Makefile
index 4abaf16d2077..207b6b958f66 100644
--- a/tools/testing/selftests/net/bpf/Makefile
+++ b/tools/testing/selftests/net/bpf/Makefile
@@ -7,7 +7,7 @@  BPFDIR := $(abspath ../../../lib/bpf)
 APIDIR := $(abspath ../../../include/uapi)
 
 CCINCLUDE += -I../../bpf
-CCINCLUDE += -I../../../../../usr/include/
+CCINCLUDE += $(KHDR_INCLUDES)
 CCINCLUDE += -I$(SCRATCH_DIR)/include
 
 BPFOBJ := $(BUILD_DIR)/libbpf/libbpf.a
diff --git a/tools/testing/selftests/net/mptcp/Makefile b/tools/testing/selftests/net/mptcp/Makefile
index 43a723626126..06bba013bcef 100644
--- a/tools/testing/selftests/net/mptcp/Makefile
+++ b/tools/testing/selftests/net/mptcp/Makefile
@@ -2,7 +2,7 @@ 
 
 top_srcdir = ../../../../..
 
-CFLAGS =  -Wall -Wl,--no-as-needed -O2 -g -I$(top_srcdir)/usr/include $(KHDR_INCLUDES)
+CFLAGS =  -Wall -Wl,--no-as-needed -O2 -g $(KHDR_INCLUDES)
 
 TEST_PROGS := mptcp_connect.sh pm_netlink.sh mptcp_join.sh diag.sh \
 	      simult_flows.sh mptcp_sockopt.sh userspace_pm.sh
diff --git a/tools/testing/selftests/net/openvswitch/Makefile b/tools/testing/selftests/net/openvswitch/Makefile
index 2f1508abc826..41ddfa9fdd1d 100644
--- a/tools/testing/selftests/net/openvswitch/Makefile
+++ b/tools/testing/selftests/net/openvswitch/Makefile
@@ -2,7 +2,7 @@ 
 
 top_srcdir = ../../../../..
 
-CFLAGS =  -Wall -Wl,--no-as-needed -O2 -g -I$(top_srcdir)/usr/include $(KHDR_INCLUDES)
+CFLAGS =  -Wall -Wl,--no-as-needed -O2 -g $(KHDR_INCLUDES)
 
 TEST_PROGS := openvswitch.sh