[linux] 01/01: uapi: fix linux/if.h userspace compilation errors (see #822393, #824442)

debian-kernel at lists.debian.org debian-kernel at lists.debian.org
Thu Jun 1 16:50:32 UTC 2017


This is an automated email from the git hooks/post-receive script.

benh pushed a commit to branch sid
in repository linux.

commit b9ea5ea2a4b0f96fb33aa4a432ce5601efeacceb
Author: Ben Hutchings <ben at decadent.org.uk>
Date:   Thu Jun 1 17:49:14 2017 +0100

    uapi: fix linux/if.h userspace compilation errors (see #822393, #824442)
---
 debian/changelog                                   |  1 +
 ...x-linux-if.h-userspace-compilation-errors.patch | 68 ++++++++++++++++++++++
 debian/patches/series                              |  1 +
 3 files changed, 70 insertions(+)

diff --git a/debian/changelog b/debian/changelog
index bc6a1a7..cf4bdce 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -410,6 +410,7 @@ linux (4.9.30-1) UNRELEASED; urgency=medium
     MIPS_L1_CACHE_SHIFT_6" to avoid ABI change
   * SUNRPC: Refactor svc_set_num_threads()
   * NFSv4: Fix callback server shutdown (CVE-2017-9059)
+  * uapi: fix linux/if.h userspace compilation errors (see #822393, #824442)
 
   [ Salvatore Bonaccorso ]
   * tracing: Use strlcpy() instead of strcpy() in __trace_find_cmdline()
diff --git a/debian/patches/bugfix/all/uapi-fix-linux-if.h-userspace-compilation-errors.patch b/debian/patches/bugfix/all/uapi-fix-linux-if.h-userspace-compilation-errors.patch
new file mode 100644
index 0000000..697260a
--- /dev/null
+++ b/debian/patches/bugfix/all/uapi-fix-linux-if.h-userspace-compilation-errors.patch
@@ -0,0 +1,68 @@
+From: "Dmitry V. Levin" <ldv at altlinux.org>
+Date: Mon, 20 Feb 2017 14:58:41 +0300
+Subject: uapi: fix linux/if.h userspace compilation errors
+Origin: https://git.kernel.org/linus/2618be7dccf8739b89e1906b64bd8d551af351e6
+Bug-Debian: https://bugs.debian.org/822393
+
+Include <sys/socket.h> (guarded by ifndef __KERNEL__) to fix
+the following linux/if.h userspace compilation errors:
+
+/usr/include/linux/if.h:234:19: error: field 'ifru_addr' has incomplete type
+   struct sockaddr ifru_addr;
+/usr/include/linux/if.h:235:19: error: field 'ifru_dstaddr' has incomplete type
+   struct sockaddr ifru_dstaddr;
+/usr/include/linux/if.h:236:19: error: field 'ifru_broadaddr' has incomplete type
+   struct sockaddr ifru_broadaddr;
+/usr/include/linux/if.h:237:19: error: field 'ifru_netmask' has incomplete type
+   struct sockaddr ifru_netmask;
+/usr/include/linux/if.h:238:20: error: field 'ifru_hwaddr' has incomplete type
+   struct  sockaddr ifru_hwaddr;
+
+This also fixes userspace compilation of the following uapi headers:
+  linux/atmbr2684.h
+  linux/gsmmux.h
+  linux/if_arp.h
+  linux/if_bonding.h
+  linux/if_frad.h
+  linux/if_pppox.h
+  linux/if_tunnel.h
+  linux/netdevice.h
+  linux/route.h
+  linux/wireless.h
+
+As no uapi header provides a definition of struct sockaddr, inclusion
+of <sys/socket.h> seems to be the most conservative and the only safe
+fix available.
+
+All current users of <linux/if.h> are very likely to be including
+<sys/socket.h> already because the latter is the sole provider
+of struct sockaddr definition in libc, so adding a uapi header
+with a definition of struct sockaddr would create a potential
+conflict with <sys/socket.h>.
+
+Replacing struct sockaddr in the definition of struct ifreq with
+a different type would create a potential incompatibility with current
+users of struct ifreq who might rely on ifru_addr et al members being
+of type struct sockaddr.
+
+Signed-off-by: Dmitry V. Levin <ldv at altlinux.org>
+Signed-off-by: David S. Miller <davem at davemloft.net>
+---
+ include/uapi/linux/if.h | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/include/uapi/linux/if.h b/include/uapi/linux/if.h
+index 1158a043342a..259617a551f2 100644
+--- a/include/uapi/linux/if.h
++++ b/include/uapi/linux/if.h
+@@ -24,6 +24,10 @@
+ #include <linux/socket.h>		/* for "struct sockaddr" et al	*/
+ #include <linux/compiler.h>		/* for "__user" et al           */
+ 
++#ifndef __KERNEL__
++#include <sys/socket.h>			/* for struct sockaddr.		*/
++#endif
++
+ #if __UAPI_DEF_IF_IFNAMSIZ
+ #define	IFNAMSIZ	16
+ #endif /* __UAPI_DEF_IF_IFNAMSIZ */
diff --git a/debian/patches/series b/debian/patches/series
index 76d6045..7b504fc 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -73,6 +73,7 @@ bugfix/all/fs-add-module_softdep-declarations-for-hard-coded-cr.patch
 bugfix/all/kbuild-do-not-use-hyphen-in-exported-variable-name.patch
 bugfix/all/partially-revert-usb-kconfig-using-select-for-usb_co.patch
 bugfix/all/kbuild-include-addtree-remove-quotes-before-matching-path.patch
+bugfix/all/uapi-fix-linux-if.h-userspace-compilation-errors.patch
 
 # Miscellaneous features
 features/all/netfilter-nft_ct-add-notrack-support.patch

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/kernel/linux.git



More information about the Kernel-svn-changes mailing list