The pidfd selftests run in userspace and include both userspace and kernel header files. On some distros (for example, CentOS), this results in duplicate-symbol warnings in allmodconfig builds, while on other distros (for example, Ubuntu) it does not. (This happens in recent -next trees, including next-20250714.)
Therefore, use #undef to get rid of the userspace definitions in favor of the kernel definitions.
Other ways of handling this include splitting up the selftest code so that the userspace definitions go into one translation unit and the kernel definitions into another (which might or might not be feasible) or to adjust compiler command-line options to suppress the warnings (which might or might not be desirable).
Signed-off-by: Paul E. McKenney paulmck@kernel.org Cc: Christian Brauner brauner@kernel.org Cc: Shuah Khan shuah@kernel.org Cc: linux-kselftest@vger.kernel.org
--- pidfd.h | 4 ++++ 1 file changed, 4 insertions(+)
diff --git a/tools/testing/selftests/pidfd/pidfd.h b/tools/testing/selftests/pidfd/pidfd.h index efd74063126eb..6ff495398e872 100644 --- a/tools/testing/selftests/pidfd/pidfd.h +++ b/tools/testing/selftests/pidfd/pidfd.h @@ -16,6 +16,10 @@ #include <sys/types.h> #include <sys/wait.h>
+#undef SCHED_NORMAL +#undef SCHED_FLAG_KEEP_ALL +#undef SCHED_FLAG_UTIL_CLAMP + #include "../kselftest.h" #include "../clone3/clone3_selftests.h"
On 7/14/25 17:01, Paul E. McKenney wrote:
The pidfd selftests run in userspace and include both userspace and kernel header files. On some distros (for example, CentOS), this results in duplicate-symbol warnings in allmodconfig builds, while on other distros (for example, Ubuntu) it does not. (This happens in recent -next trees, including next-20250714.)
Therefore, use #undef to get rid of the userspace definitions in favor of the kernel definitions.
Other ways of handling this include splitting up the selftest code so that the userspace definitions go into one translation unit and the kernel definitions into another (which might or might not be feasible) or to adjust compiler command-line options to suppress the warnings (which might or might not be desirable).
Signed-off-by: Paul E. McKenney paulmck@kernel.org Cc: Christian Brauner brauner@kernel.org Cc: Shuah Khan shuah@kernel.org Cc: linux-kselftest@vger.kernel.org
pidfd.h | 4 ++++ 1 file changed, 4 insertions(+)
diff --git a/tools/testing/selftests/pidfd/pidfd.h b/tools/testing/selftests/pidfd/pidfd.h index efd74063126eb..6ff495398e872 100644 --- a/tools/testing/selftests/pidfd/pidfd.h +++ b/tools/testing/selftests/pidfd/pidfd.h @@ -16,6 +16,10 @@ #include <sys/types.h> #include <sys/wait.h>
Please add comments here about why we are adding this so there won't be any confusion later.
+#undef SCHED_NORMAL +#undef SCHED_FLAG_KEEP_ALL +#undef SCHED_FLAG_UTIL_CLAMP
- #include "../kselftest.h" #include "../clone3/clone3_selftests.h"
With that change:
Reviewed-by: Shuah Khan skhan@linuxfoundation.org
I am assuming this will go through Christian's tree. If not I can take it through mine.
thanks, -- Shuah
On Fri, Jul 18, 2025 at 03:03:43PM -0600, Shuah Khan wrote:
On 7/14/25 17:01, Paul E. McKenney wrote:
The pidfd selftests run in userspace and include both userspace and kernel header files. On some distros (for example, CentOS), this results in duplicate-symbol warnings in allmodconfig builds, while on other distros (for example, Ubuntu) it does not. (This happens in recent -next trees, including next-20250714.)
Therefore, use #undef to get rid of the userspace definitions in favor of the kernel definitions.
Other ways of handling this include splitting up the selftest code so that the userspace definitions go into one translation unit and the kernel definitions into another (which might or might not be feasible) or to adjust compiler command-line options to suppress the warnings (which might or might not be desirable).
Signed-off-by: Paul E. McKenney paulmck@kernel.org Cc: Christian Brauner brauner@kernel.org Cc: Shuah Khan shuah@kernel.org Cc: linux-kselftest@vger.kernel.org
pidfd.h | 4 ++++ 1 file changed, 4 insertions(+)
diff --git a/tools/testing/selftests/pidfd/pidfd.h b/tools/testing/selftests/pidfd/pidfd.h index efd74063126eb..6ff495398e872 100644 --- a/tools/testing/selftests/pidfd/pidfd.h +++ b/tools/testing/selftests/pidfd/pidfd.h @@ -16,6 +16,10 @@ #include <sys/types.h> #include <sys/wait.h>
Please add comments here about why we are adding this so there won't be any confusion later.
Good point, thank you!
Like this?
/* * Remove the userspace definitions of the following preprocessor symbols * to avoid duplicate-definition warnings from the subsequent in-kernel * definitions. */
+#undef SCHED_NORMAL +#undef SCHED_FLAG_KEEP_ALL +#undef SCHED_FLAG_UTIL_CLAMP
- #include "../kselftest.h" #include "../clone3/clone3_selftests.h"
With that change:
Reviewed-by: Shuah Khan skhan@linuxfoundation.org
Thank you!
I am assuming this will go through Christian's tree. If not I can take it through mine.
I am of course good either way. ;-)
Thanx, Paul
The pidfd selftests run in userspace and include both userspace and kernel header files. On some distros (for example, CentOS), this results in duplicate-symbol warnings in allmodconfig builds, while on other distros (for example, Ubuntu) it does not.
Therefore, use #undef to get rid of the userspace definitions in favor of the kernel definitions.
Other ways of handling this include splitting up the selftest code so that the userspace definitions go into one translation unit and the kernel definitions into another (which might or might not be feasible) or to adjust compiler command-line options to suppress the warnings (which might or might not be desirable).
[ paulmck: Apply Shuah Khan feedback. ]
Signed-off-by: Paul E. McKenney paulmck@kernel.org Reviewed-by: Shuah Khan skhan@linuxfoundation.org Cc: Christian Brauner brauner@kernel.org Cc: linux-kselftest@vger.kernel.org
--- pidfd.h | 9 +++++++++ 1 file changed, 9 insertions(+)
Changes since v1 (RFC):
o Added comment explaining the purpose of the #undef calls per Shuah Khan feedback.
diff --git a/tools/testing/selftests/pidfd/pidfd.h b/tools/testing/selftests/pidfd/pidfd.h index efd74063126eb..254eaa6cc4dfa 100644 --- a/tools/testing/selftests/pidfd/pidfd.h +++ b/tools/testing/selftests/pidfd/pidfd.h @@ -16,6 +16,15 @@ #include <sys/types.h> #include <sys/wait.h>
+/* + * Remove the userspace definitions of the following preprocessor symbols + * to avoid duplicate-definition warnings from the subsequent in-kernel + * definitions. + */ +#undef SCHED_NORMAL +#undef SCHED_FLAG_KEEP_ALL +#undef SCHED_FLAG_UTIL_CLAMP + #include "../kselftest.h" #include "../clone3/clone3_selftests.h"
linux-kselftest-mirror@lists.linaro.org