From 47260c0059dd8f999db2c9ae2fad460d8f779a33 Mon Sep 17 00:00:00 2001 From: Machon Gregory Date: Mon, 1 Feb 2016 11:54:23 -0500 Subject: Allow xsm to be built with GCC 5.1.1 and greater The patch was cherrypicked from upstream Xen. See patch header for more information. Signed-off-by: Machon Gregory Signed-off-by: Bruce Ashfield --- ...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 (limited to 'recipes-extended') 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 00000000..efe6e748 --- /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 +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 +Acked-by: Daniel De Graaf +--- + 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 41241cd4..7650e463 100644 --- a/recipes-extended/xen/xen_4.6.0.bb +++ b/recipes-extended/xen/xen_4.6.0.bb @@ -2,6 +2,7 @@ require xen.inc SRC_URI = " \ http://bits.xensource.com/oss-xen/release/${PV}/xen-${PV}.tar.gz \ + file://xen-xsm-Make-p-policyvers-be-a-local-variable-ver-to.patch \ " SRC_URI[md5sum] = "48e232f90927c08326a7b52bb06f49bc" -- cgit v1.2.3-54-g00ecf