blob: b662a41508554d75cf784bc7a8265491d667477d [file] [log] [blame]
Brad Bishopd5ae7d92018-06-14 09:52:03 -07001From 47fdb0b6e2e393194a8c81544c647fdd997aec7f 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
Patrick Williamsc124f4f2015-09-15 14:41:29 -05005
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---
Brad Bishopd5ae7d92018-06-14 09:52:03 -070058 fsdev/virtfs-proxy-helper.c | 7 +++++--
Patrick Williamsc124f4f2015-09-15 14:41:29 -050059 1 file changed, 5 insertions(+), 2 deletions(-)
60
61diff --git a/fsdev/virtfs-proxy-helper.c b/fsdev/virtfs-proxy-helper.c
Brad Bishopd5ae7d92018-06-14 09:52:03 -070062index 8e48500..6490030 100644
Patrick Williamsc124f4f2015-09-15 14:41:29 -050063--- a/fsdev/virtfs-proxy-helper.c
64+++ b/fsdev/virtfs-proxy-helper.c
Brad Bishopd5ae7d92018-06-14 09:52:03 -070065@@ -13,7 +13,6 @@
Patrick Williamsc124f4f2015-09-15 14:41:29 -050066 #include <sys/resource.h>
67 #include <getopt.h>
68 #include <syslog.h>
69-#include <sys/capability.h>
70 #include <sys/fsuid.h>
71 #include <sys/vfs.h>
72 #include <sys/ioctl.h>
Brad Bishopd5ae7d92018-06-14 09:52:03 -070073@@ -27,7 +26,11 @@
Patrick Williamsc0f7c042017-02-23 20:41:17 -060074 #include "9p-iov-marshal.h"
75 #include "hw/9pfs/9p-proxy.h"
76 #include "fsdev/9p-iov-marshal.h"
Patrick Williamsc124f4f2015-09-15 14:41:29 -050077-
78+/*
79+ * Include this one last due to some versions of it being buggy:
80+ * http://www.linuxtv.org/pipermail/vdr/2009-August/021194.html
81+ */
82+#include <sys/capability.h>
83 #define PROGNAME "virtfs-proxy-helper"
84
85 #ifndef XFS_SUPER_MAGIC