[meta-virtualization] [PATCH] Allow xsm to be built with GCC 5.1.1 and greater
Machon Gregory
mbgrego at tycho.nsa.gov
Fri Jan 29 10:24:02 PST 2016
The patch was cherrypicked from upstream Xen. See patch header for more information.
---
...e-p-policyvers-be-a-local-variable-ver-to.patch | 122 +++++++++++++++++++++
recipes-extended/xen/xen_4.6.0.bb | 1 +
2 files changed, 123 insertions(+)
create mode 100644 recipes-extended/xen/files/xen-xsm-Make-p-policyvers-be-a-local-variable-ver-to.patch
diff --git a/recipes-extended/xen/files/xen-xsm-Make-p-policyvers-be-a-local-variable-ver-to.patch b/recipes-extended/xen/files/xen-xsm-Make-p-policyvers-be-a-local-variable-ver-to.patch
new file mode 100644
index 0000000..efe6e74
--- /dev/null
+++ b/recipes-extended/xen/files/xen-xsm-Make-p-policyvers-be-a-local-variable-ver-to.patch
@@ -0,0 +1,122 @@
+From 6a2f81459e1455d65a9a6f78dd2a0d0278619680 Mon Sep 17 00:00:00 2001
+From: Konrad Rzeszutek Wilk <konrad.wilk at oracle.com>
+Date: Wed, 16 Sep 2015 15:57:27 -0400
+Subject: [PATCH] xen/xsm: Make p->policyvers be a local variable (ver) to shut
+ up GCC 5.1.1 warnings.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+policydb.c: In function ‘user_read’:
+policydb.c:1443:26: error: ‘buf[2]’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
+ usrdatum->bounds = le32_to_cpu(buf[2]);
+ ^
+cc1: all warnings being treated as errors
+
+Which (as Andrew mentioned) is because GCC cannot assume
+that 'p->policyvers' has the same value between checks.
+
+We make it local, optimize the name to 'ver' and the warnings go away.
+We also update another call site with this modification to
+make it more inline with the rest of the functions.
+
+Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk at oracle.com>
+Acked-by: Daniel De Graaf <dgdegra at tycho.nsa.gov>
+---
+ xen/xsm/flask/ss/policydb.c | 17 ++++++++++-------
+ 1 file changed, 10 insertions(+), 7 deletions(-)
+
+diff --git a/xen/xsm/flask/ss/policydb.c b/xen/xsm/flask/ss/policydb.c
+index a1060b1..eebfe9c 100644
+--- a/xen/xsm/flask/ss/policydb.c
++++ b/xen/xsm/flask/ss/policydb.c
+@@ -1258,6 +1258,7 @@ static int role_read(struct policydb *p, struct hashtab *h, void *fp)
+ int rc;
+ __le32 buf[3];
+ u32 len;
++ u32 ver = p->policyvers;
+
+ role = xzalloc(struct role_datum);
+ if ( !role )
+@@ -1266,7 +1267,7 @@ static int role_read(struct policydb *p, struct hashtab *h, void *fp)
+ goto out;
+ }
+
+- if ( p->policyvers >= POLICYDB_VERSION_BOUNDARY )
++ if ( ver >= POLICYDB_VERSION_BOUNDARY )
+ rc = next_entry(buf, fp, sizeof(buf[0]) * 3);
+ else
+ rc = next_entry(buf, fp, sizeof(buf[0]) * 2);
+@@ -1276,7 +1277,7 @@ static int role_read(struct policydb *p, struct hashtab *h, void *fp)
+
+ len = le32_to_cpu(buf[0]);
+ role->value = le32_to_cpu(buf[1]);
+- if ( p->policyvers >= POLICYDB_VERSION_BOUNDARY )
++ if ( ver >= POLICYDB_VERSION_BOUNDARY )
+ role->bounds = le32_to_cpu(buf[2]);
+
+ key = xmalloc_array(char, len + 1);
+@@ -1328,6 +1329,7 @@ static int type_read(struct policydb *p, struct hashtab *h, void *fp)
+ int rc;
+ __le32 buf[4];
+ u32 len;
++ u32 ver = p->policyvers;
+
+ typdatum = xzalloc(struct type_datum);
+ if ( !typdatum )
+@@ -1336,7 +1338,7 @@ static int type_read(struct policydb *p, struct hashtab *h, void *fp)
+ return rc;
+ }
+
+- if ( p->policyvers >= POLICYDB_VERSION_BOUNDARY )
++ if ( ver >= POLICYDB_VERSION_BOUNDARY )
+ rc = next_entry(buf, fp, sizeof(buf[0]) * 4);
+ else
+ rc = next_entry(buf, fp, sizeof(buf[0]) * 3);
+@@ -1346,7 +1348,7 @@ static int type_read(struct policydb *p, struct hashtab *h, void *fp)
+
+ len = le32_to_cpu(buf[0]);
+ typdatum->value = le32_to_cpu(buf[1]);
+- if ( p->policyvers >= POLICYDB_VERSION_BOUNDARY )
++ if ( ver >= POLICYDB_VERSION_BOUNDARY )
+ {
+ u32 prop = le32_to_cpu(buf[2]);
+
+@@ -1421,6 +1423,7 @@ static int user_read(struct policydb *p, struct hashtab *h, void *fp)
+ int rc;
+ __le32 buf[3];
+ u32 len;
++ u32 ver = p->policyvers;
+
+ usrdatum = xzalloc(struct user_datum);
+ if ( !usrdatum )
+@@ -1429,7 +1432,7 @@ static int user_read(struct policydb *p, struct hashtab *h, void *fp)
+ goto out;
+ }
+
+- if ( p->policyvers >= POLICYDB_VERSION_BOUNDARY )
++ if ( ver >= POLICYDB_VERSION_BOUNDARY )
+ rc = next_entry(buf, fp, sizeof(buf[0]) * 3);
+ else
+ rc = next_entry(buf, fp, sizeof(buf[0]) * 2);
+@@ -1439,7 +1442,7 @@ static int user_read(struct policydb *p, struct hashtab *h, void *fp)
+
+ len = le32_to_cpu(buf[0]);
+ usrdatum->value = le32_to_cpu(buf[1]);
+- if ( p->policyvers >= POLICYDB_VERSION_BOUNDARY )
++ if ( ver >= POLICYDB_VERSION_BOUNDARY )
+ usrdatum->bounds = le32_to_cpu(buf[2]);
+
+ key = xmalloc_array(char, len + 1);
+@@ -1457,7 +1460,7 @@ static int user_read(struct policydb *p, struct hashtab *h, void *fp)
+ if ( rc )
+ goto bad;
+
+- if ( p->policyvers >= POLICYDB_VERSION_MLS )
++ if ( ver >= POLICYDB_VERSION_MLS )
+ {
+ rc = mls_read_range_helper(&usrdatum->range, fp);
+ if ( rc )
+--
+2.1.0
+
diff --git a/recipes-extended/xen/xen_4.6.0.bb b/recipes-extended/xen/xen_4.6.0.bb
index 92975a0..4939275 100644
--- a/recipes-extended/xen/xen_4.6.0.bb
+++ b/recipes-extended/xen/xen_4.6.0.bb
@@ -3,6 +3,7 @@ require xen.inc
SRC_URI = " \
http://bits.xensource.com/oss-xen/release/${PV}/xen-${PV}.tar.gz \
file://xen-x86-Fix-up-rules-when-forcing-mno-sse.patch \
+ file://xen-xsm-Make-p-policyvers-be-a-local-variable-ver-to.patch \
"
SRC_URI[md5sum] = "48e232f90927c08326a7b52bb06f49bc"
--
2.1.0
More information about the meta-virtualization
mailing list