blob: 3a7d7bbd33dd2e5c04a9a06b6ba836699c20d8df [file] [log] [blame]
Brad Bishopc342db32019-05-15 21:57:59 -04001From 9125afb733d8c96416bb83c5adad39bb8d0803a1 Mon Sep 17 00:00:00 2001
2From: Hongxu Jia <hongxu.jia@windriver.com>
3Date: Tue, 12 Mar 2013 09:54:06 +0800
4Subject: [PATCH] fix libcap header issue on some distro
5
61, When build qemu-native on SLED 11.2, there is an error:
7...
8| In file included from /usr/include/bits/sigcontext.h:28,
9| from /usr/include/signal.h:339,
10| from /buildarea2/tmp/work/i686-linux/qemu-native/1.4.0-r0/
11qemu-1.4.0/include/qemu-common.h:42,
12| from fsdev/virtfs-proxy-helper.c:23:
13| /usr/include/asm/sigcontext.h:28: error: expected specifier-
14qualifier-list before '__u64'
15| /usr/include/asm/sigcontext.h:191: error: expected specifier-
16qualifier-list before '__u64'
17...
18
192, The virtfs-proxy-helper.c includes <sys/capability.h> and
20qemu-common.h in sequence. The header include map is:
21(`-->' presents `include')
22...
23"virtfs-proxy-helper.c" --> <sys/capability.h>
24...
25"virtfs-proxy-helper.c" --> "qemu-common.h" --> <signal.h> -->
26<bits/sigcontext.h> --> <asm/sigcontext.h> --> <linux/types.h> -->
27<asm/types.h> --> <asm-generic/types.h> --> <asm-generic/int-ll64.h>
28...
29
303, The bug is found on SLED 11.2 x86. In libcap header file
31/usr/include/sys/capability.h, it does evil stuff like this:
32...
33 25 /*
34 26 * Make sure we can be included from userland by preventing
35 27 * capability.h from including other kernel headers
36 28 */
37 29 #define _LINUX_TYPES_H
38 30 #define _LINUX_FS_H
39 31 #define __LINUX_COMPILER_H
40 32 #define __user
41 33
42 34 typedef unsigned int __u32;
43 35 typedef __u32 __le32;
44...
45This completely prevents including /usr/include/linux/types.h.
46The above `<asm/sigcontext.h> --> <linux/types.h>' is prevented,
47and '__u64' is defined in <asm-generic/int-ll64.h>.
48
494, Modify virtfs-proxy-helper.c to include <sys/capability.h>
50last to workaround the issue.
51
52http://www.linuxtv.org/pipermail/vdr/2009-August/021194.html
53http://patchwork.linuxtv.org/patch/12748/
54
55Upstream-Status: Pending
56Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
57
58---
59 fsdev/virtfs-proxy-helper.c | 7 +++++--
60 1 file changed, 5 insertions(+), 2 deletions(-)
61
62diff --git a/fsdev/virtfs-proxy-helper.c b/fsdev/virtfs-proxy-helper.c
63index 6f132c5f..8329950c 100644
64--- a/fsdev/virtfs-proxy-helper.c
65+++ b/fsdev/virtfs-proxy-helper.c
66@@ -13,7 +13,6 @@
67 #include <sys/resource.h>
68 #include <getopt.h>
69 #include <syslog.h>
70-#include <sys/capability.h>
71 #include <sys/fsuid.h>
72 #include <sys/vfs.h>
73 #include <sys/ioctl.h>
74@@ -27,7 +26,11 @@
75 #include "9p-iov-marshal.h"
76 #include "hw/9pfs/9p-proxy.h"
77 #include "fsdev/9p-iov-marshal.h"
78-
79+/*
80+ * Include this one last due to some versions of it being buggy:
81+ * http://www.linuxtv.org/pipermail/vdr/2009-August/021194.html
82+ */
83+#include <sys/capability.h>
84 #define PROGNAME "virtfs-proxy-helper"
85
86 #ifndef XFS_SUPER_MAGIC