include/uapi/linux/mptcp.h | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-)
Including <linux/mptcp.h> before the C library <netinet/in.h> header
causes symbol redefinition errors at compile-time due to duplicate
declarations and definitions in the <linux/in.h> header included by
<linux/mptcp.h>.
Explicitly include <netinet/in.h> before <linux/in.h> in
<linux/mptcp.h> when __KERNEL__ is not defined so that the C library
compatibility logic in <linux/libc-compat.h> is enabled when including
<linux/mptcp.h> in user space code.
Signed-off-by: Ossama Othman <ossama.othman@intel.com>
---
include/uapi/linux/mptcp.h | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/include/uapi/linux/mptcp.h b/include/uapi/linux/mptcp.h
index 921963589904..dfe19bf13f4c 100644
--- a/include/uapi/linux/mptcp.h
+++ b/include/uapi/linux/mptcp.h
@@ -2,16 +2,17 @@
#ifndef _UAPI_MPTCP_H
#define _UAPI_MPTCP_H
+#ifndef __KERNEL__
+#include <netinet/in.h> /* for sockaddr_in and sockaddr_in6 */
+#include <sys/socket.h> /* for struct sockaddr */
+#endif
+
#include <linux/const.h>
#include <linux/types.h>
#include <linux/in.h> /* for sockaddr_in */
#include <linux/in6.h> /* for sockaddr_in6 */
#include <linux/socket.h> /* for sockaddr_storage and sa_family */
-#ifndef __KERNEL__
-#include <sys/socket.h> /* for struct sockaddr */
-#endif
-
#define MPTCP_SUBFLOW_FLAG_MCAP_REM _BITUL(0)
#define MPTCP_SUBFLOW_FLAG_MCAP_LOC _BITUL(1)
#define MPTCP_SUBFLOW_FLAG_JOIN_REM _BITUL(2)
--
2.34.1
On Thu, 19 May 2022, Ossama Othman wrote: > Including <linux/mptcp.h> before the C library <netinet/in.h> header > causes symbol redefinition errors at compile-time due to duplicate > declarations and definitions in the <linux/in.h> header included by > <linux/mptcp.h>. > > Explicitly include <netinet/in.h> before <linux/in.h> in > <linux/mptcp.h> when __KERNEL__ is not defined so that the C library > compatibility logic in <linux/libc-compat.h> is enabled when including > <linux/mptcp.h> in user space code. > > Signed-off-by: Ossama Othman <ossama.othman@intel.com> Looks good to me, I think this makes things easier for userspace. Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com> > --- > include/uapi/linux/mptcp.h | 9 +++++---- > 1 file changed, 5 insertions(+), 4 deletions(-) > > diff --git a/include/uapi/linux/mptcp.h b/include/uapi/linux/mptcp.h > index 921963589904..dfe19bf13f4c 100644 > --- a/include/uapi/linux/mptcp.h > +++ b/include/uapi/linux/mptcp.h > @@ -2,16 +2,17 @@ > #ifndef _UAPI_MPTCP_H > #define _UAPI_MPTCP_H > > +#ifndef __KERNEL__ > +#include <netinet/in.h> /* for sockaddr_in and sockaddr_in6 */ > +#include <sys/socket.h> /* for struct sockaddr */ > +#endif > + > #include <linux/const.h> > #include <linux/types.h> > #include <linux/in.h> /* for sockaddr_in */ > #include <linux/in6.h> /* for sockaddr_in6 */ > #include <linux/socket.h> /* for sockaddr_storage and sa_family */ > > -#ifndef __KERNEL__ > -#include <sys/socket.h> /* for struct sockaddr */ > -#endif > - > #define MPTCP_SUBFLOW_FLAG_MCAP_REM _BITUL(0) > #define MPTCP_SUBFLOW_FLAG_MCAP_LOC _BITUL(1) > #define MPTCP_SUBFLOW_FLAG_JOIN_REM _BITUL(2) > -- > 2.34.1 > > > -- Mat Martineau Intel
Hi Ossama, Mat, On 20/05/2022 02:05, Mat Martineau wrote: > On Thu, 19 May 2022, Ossama Othman wrote: > >> Including <linux/mptcp.h> before the C library <netinet/in.h> header >> causes symbol redefinition errors at compile-time due to duplicate >> declarations and definitions in the <linux/in.h> header included by >> <linux/mptcp.h>. >> >> Explicitly include <netinet/in.h> before <linux/in.h> in >> <linux/mptcp.h> when __KERNEL__ is not defined so that the C library >> compatibility logic in <linux/libc-compat.h> is enabled when including >> <linux/mptcp.h> in user space code. >> >> Signed-off-by: Ossama Othman <ossama.othman@intel.com> > > Looks good to me, I think this makes things easier for userspace. > > Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com> Thank you for the patch and the review! Do you mind if I add this Fixes tag? Fixes: c11c5906bc0a ("mptcp: add MPTCP_SUBFLOW_ADDRS getsockopt support") Or do you prefer without it not to have it backported? Cheers, Matt -- Tessares | Belgium | Hybrid Access Solutions www.tessares.net
On Fri, 20 May 2022, Matthieu Baerts wrote: > Hi Ossama, Mat, > > On 20/05/2022 02:05, Mat Martineau wrote: >> On Thu, 19 May 2022, Ossama Othman wrote: >> >>> Including <linux/mptcp.h> before the C library <netinet/in.h> header >>> causes symbol redefinition errors at compile-time due to duplicate >>> declarations and definitions in the <linux/in.h> header included by >>> <linux/mptcp.h>. >>> >>> Explicitly include <netinet/in.h> before <linux/in.h> in >>> <linux/mptcp.h> when __KERNEL__ is not defined so that the C library >>> compatibility logic in <linux/libc-compat.h> is enabled when including >>> <linux/mptcp.h> in user space code. >>> >>> Signed-off-by: Ossama Othman <ossama.othman@intel.com> >> >> Looks good to me, I think this makes things easier for userspace. >> >> Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com> > > Thank you for the patch and the review! > > Do you mind if I add this Fixes tag? > > Fixes: c11c5906bc0a ("mptcp: add MPTCP_SUBFLOW_ADDRS getsockopt support") > > Or do you prefer without it not to have it backported? > Fixes tag is good, thanks! I will probably cc: stable on this one. -- Mat Martineau Intel
Hi Ossama, Mat, On 21/05/2022 02:18, Mat Martineau wrote: > On Fri, 20 May 2022, Matthieu Baerts wrote: > >> Hi Ossama, Mat, >> >> On 20/05/2022 02:05, Mat Martineau wrote: >>> On Thu, 19 May 2022, Ossama Othman wrote: >>> >>>> Including <linux/mptcp.h> before the C library <netinet/in.h> header >>>> causes symbol redefinition errors at compile-time due to duplicate >>>> declarations and definitions in the <linux/in.h> header included by >>>> <linux/mptcp.h>. >>>> >>>> Explicitly include <netinet/in.h> before <linux/in.h> in >>>> <linux/mptcp.h> when __KERNEL__ is not defined so that the C library >>>> compatibility logic in <linux/libc-compat.h> is enabled when including >>>> <linux/mptcp.h> in user space code. >>>> >>>> Signed-off-by: Ossama Othman <ossama.othman@intel.com> >>> >>> Looks good to me, I think this makes things easier for userspace. >>> >>> Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com> >> >> Thank you for the patch and the review! >> >> Do you mind if I add this Fixes tag? >> >> Fixes: c11c5906bc0a ("mptcp: add MPTCP_SUBFLOW_ADDRS getsockopt support") >> >> Or do you prefer without it not to have it backported? >> > > Fixes tag is good, thanks! Great, just did. I also changed the author (FROM) to use Ossama's Intel email address. I guess that was your intension, right? Applied in our tree (fixes for net-next, easier as Mat said): New patches for t/upstream: - 334cee2f9c14: mptcp: fix conflict with <netinet/in.h> - Results: c1baa3aff794..bbf8496f889f (export) Builds and tests are now in progress: https://cirrus-ci.com/github/multipath-tcp/mptcp_net-next/export/20220521T072520 https://github.com/multipath-tcp/mptcp_net-next/actions/workflows/build-validation.yml?query=branch:export > I will probably cc: stable on this one. Good idea! Cheers, Matt -- Tessares | Belgium | Hybrid Access Solutions www.tessares.net
Hi Ossama, Thank you for your modifications, that's great! Our CI did some validations and here is its report: - KVM Validation: normal: - Success! ✅: - Task: https://cirrus-ci.com/task/6207370031267840 - Summary: https://api.cirrus-ci.com/v1/artifact/task/6207370031267840/summary/summary.txt - KVM Validation: debug: - Unstable: 2 failed test(s): selftest_diag selftest_mptcp_join 🔴: - Task: https://cirrus-ci.com/task/4799995147714560 - Summary: https://api.cirrus-ci.com/v1/artifact/task/4799995147714560/summary/summary.txt Initiator: Patchew Applier Commits: https://github.com/multipath-tcp/mptcp_net-next/commits/9ca5881aed64 If there are some issues, you can reproduce them using the same environment as the one used by the CI thanks to a docker image, e.g.: $ cd [kernel source code] $ docker run -v "${PWD}:${PWD}:rw" -w "${PWD}" --privileged --rm -it \ --pull always mptcp/mptcp-upstream-virtme-docker:latest \ auto-debug For more details: https://github.com/multipath-tcp/mptcp-upstream-virtme-docker Please note that despite all the efforts that have been already done to have a stable tests suite when executed on a public CI like here, it is possible some reported issues are not due to your modifications. Still, do not hesitate to help us improve that ;-) Cheers, MPTCP GH Action bot Bot operated by Matthieu Baerts (Tessares)
© 2016 - 2025 Red Hat, Inc.