From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: Re: [PATCH v2] mini-os: Fix stubdom build failures on gcc 4.8 Date: Wed, 22 Jan 2014 18:47:46 +0000 Message-ID: <52E01252.9000400@citrix.com> References: <1390412471-12978-1-git-send-email-xenmail43267@gmail.com> <20140122175706.GA5698@type.youpi.perso.aquilenet.fr> Mime-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Return-path: In-Reply-To: <20140122175706.GA5698@type.youpi.perso.aquilenet.fr> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Samuel Thibault , xenmail43267@gmail.com, xen-devel@lists.xen.org, alex.sharp@orionvm.com, Ian.Campbell@citrix.com, stefano.stabellini@citrix.com, Mike Neilsen Cc: George Dunlap List-Id: xen-devel@lists.xenproject.org On 22/01/14 17:57, Samuel Thibault wrote: > xenmail43267@gmail.com, le Wed 22 Jan 2014 11:41:11 -0600, a =E9crit : >> From: Mike Neilsen >> >> This is a fix for bug 35: >> http://bugs.xenproject.org/xen/bug/35 >> >> This bug report describes several format string mismatches which prevent >> building the stubdom target in Xen 4.3 and Xen 4.4-rc2 on gcc 4.8. This= is a >> copy of Alex Sharp's original patch with the following modifications: >> >> * Andrew Cooper's recommendation applied to extras/mini-os/xenbus/xenbus= .c to >> avoid stack corruption >> * Samuel Thibault's recommendation to make "fun" an unsigned int rather = than an >> unsigned long in pcifront_physical_to_virtual and related functions >> (extras/mini-os/include/pcifront.h and extras/mini-os/pcifront.c) >> >> Tested on x86_64 gcc Ubuntu/Linaro 4.8.1-10ubuntu9. >> >> Signed-off-by: Mike Neilsen > Acked-by: Samuel Thibault Reviewed-by: Andrew Cooper And after peeking at the Coverity database, Coverity-IDs: 1055807 1055808 10558091055810 As this relates to build issues, it should probably be considered for inclusion in 4.4 ~Andrew > >> --- >> Changed since v1: >> * Change "fun" arguments into unsigned ints >> --- >> extras/mini-os/fbfront.c | 4 ++-- >> extras/mini-os/include/pcifront.h | 12 ++++++------ >> extras/mini-os/pcifront.c | 14 +++++++------- >> extras/mini-os/xenbus/xenbus.c | 5 +++-- >> 4 files changed, 18 insertions(+), 17 deletions(-) >> >> diff --git a/extras/mini-os/fbfront.c b/extras/mini-os/fbfront.c >> index 1e01513..9cc07b4 100644 >> --- a/extras/mini-os/fbfront.c >> +++ b/extras/mini-os/fbfront.c >> @@ -105,7 +105,7 @@ again: >> free(err); >> } >> = >> - err =3D xenbus_printf(xbt, nodename, "page-ref","%u", virt_to_mfn(s= )); >> + err =3D xenbus_printf(xbt, nodename, "page-ref","%lu", virt_to_mfn(= s)); >> if (err) { >> message =3D "writing page-ref"; >> goto abort_transaction; >> @@ -468,7 +468,7 @@ again: >> free(err); >> } >> = >> - err =3D xenbus_printf(xbt, nodename, "page-ref","%u", virt_to_mfn(s= )); >> + err =3D xenbus_printf(xbt, nodename, "page-ref","%lu", virt_to_mfn(= s)); >> if (err) { >> message =3D "writing page-ref"; >> goto abort_transaction; >> diff --git a/extras/mini-os/include/pcifront.h b/extras/mini-os/include/= pcifront.h >> index 0a6be8e..1b05963 100644 >> --- a/extras/mini-os/include/pcifront.h >> +++ b/extras/mini-os/include/pcifront.h >> @@ -7,23 +7,23 @@ void pcifront_op(struct pcifront_dev *dev, struct xen_= pci_op *op); >> void pcifront_scan(struct pcifront_dev *dev, void (*fun)(unsigned int d= omain, unsigned int bus, unsigned slot, unsigned int fun)); >> int pcifront_conf_read(struct pcifront_dev *dev, >> unsigned int dom, >> - unsigned int bus, unsigned int slot, unsigned lo= ng fun, >> + unsigned int bus, unsigned int slot, unsigned in= t fun, >> unsigned int off, unsigned int size, unsigned in= t *val); >> int pcifront_conf_write(struct pcifront_dev *dev, >> unsigned int dom, >> - unsigned int bus, unsigned int slot, unsigned l= ong fun, >> + unsigned int bus, unsigned int slot, unsigned i= nt fun, >> unsigned int off, unsigned int size, unsigned i= nt val); >> int pcifront_enable_msi(struct pcifront_dev *dev, >> unsigned int dom, >> - unsigned int bus, unsigned int slot, unsigned l= ong fun); >> + unsigned int bus, unsigned int slot, unsigned i= nt fun); >> int pcifront_disable_msi(struct pcifront_dev *dev, >> unsigned int dom, >> - unsigned int bus, unsigned int slot, unsigned = long fun); >> + unsigned int bus, unsigned int slot, unsigned = int fun); >> int pcifront_enable_msix(struct pcifront_dev *dev, >> unsigned int dom, >> - unsigned int bus, unsigned int slot, unsigned = long fun, >> + unsigned int bus, unsigned int slot, unsigned = int fun, >> struct xen_msix_entry *entries, int n); >> int pcifront_disable_msix(struct pcifront_dev *dev, >> unsigned int dom, >> - unsigned int bus, unsigned int slot, unsigned= long fun); >> + unsigned int bus, unsigned int slot, unsigned= int fun); >> void shutdown_pcifront(struct pcifront_dev *dev); >> diff --git a/extras/mini-os/pcifront.c b/extras/mini-os/pcifront.c >> index 16a4b49..0fc5b30 100644 >> --- a/extras/mini-os/pcifront.c >> +++ b/extras/mini-os/pcifront.c >> @@ -384,7 +384,7 @@ int pcifront_physical_to_virtual (struct pcifront_de= v *dev, >> unsigned int *dom, >> unsigned int *bus, >> unsigned int *slot, >> - unsigned long *fun) >> + unsigned int *fun) >> { >> /* FIXME: the buffer sizing is a little lazy here. 10 extra bytes >> should be enough to hold the paths we need to construct, even >> @@ -456,7 +456,7 @@ void pcifront_op(struct pcifront_dev *dev, struct xe= n_pci_op *op) >> = >> int pcifront_conf_read(struct pcifront_dev *dev, >> unsigned int dom, >> - unsigned int bus, unsigned int slot, unsigned lo= ng fun, >> + unsigned int bus, unsigned int slot, unsigned in= t fun, >> unsigned int off, unsigned int size, unsigned in= t *val) >> { >> struct xen_pci_op op; >> @@ -486,7 +486,7 @@ int pcifront_conf_read(struct pcifront_dev *dev, >> = >> int pcifront_conf_write(struct pcifront_dev *dev, >> unsigned int dom, >> - unsigned int bus, unsigned int slot, unsigned l= ong fun, >> + unsigned int bus, unsigned int slot, unsigned i= nt fun, >> unsigned int off, unsigned int size, unsigned i= nt val) >> { >> struct xen_pci_op op; >> @@ -513,7 +513,7 @@ int pcifront_conf_write(struct pcifront_dev *dev, >> = >> int pcifront_enable_msi(struct pcifront_dev *dev, >> unsigned int dom, >> - unsigned int bus, unsigned int slot, unsigned l= ong fun) >> + unsigned int bus, unsigned int slot, unsigned i= nt fun) >> { >> struct xen_pci_op op; >> = >> @@ -538,7 +538,7 @@ int pcifront_enable_msi(struct pcifront_dev *dev, >> = >> int pcifront_disable_msi(struct pcifront_dev *dev, >> unsigned int dom, >> - unsigned int bus, unsigned int slot, unsigned = long fun) >> + unsigned int bus, unsigned int slot, unsigned = int fun) >> { >> struct xen_pci_op op; >> = >> @@ -560,7 +560,7 @@ int pcifront_disable_msi(struct pcifront_dev *dev, >> = >> int pcifront_enable_msix(struct pcifront_dev *dev, >> unsigned int dom, >> - unsigned int bus, unsigned int slot, unsigned = long fun, >> + unsigned int bus, unsigned int slot, unsigned = int fun, >> struct xen_msix_entry *entries, int n) >> { >> struct xen_pci_op op; >> @@ -595,7 +595,7 @@ int pcifront_enable_msix(struct pcifront_dev *dev, >> = >> int pcifront_disable_msix(struct pcifront_dev *dev, >> unsigned int dom, >> - unsigned int bus, unsigned int slot, unsigned= long fun) >> + unsigned int bus, unsigned int slot, unsigned= int fun) >> { >> struct xen_pci_op op; >> = >> diff --git a/extras/mini-os/xenbus/xenbus.c b/extras/mini-os/xenbus/xenb= us.c >> index ee1691b..c5d9b02 100644 >> --- a/extras/mini-os/xenbus/xenbus.c >> +++ b/extras/mini-os/xenbus/xenbus.c >> @@ -15,6 +15,7 @@ >> * >> **********************************************************************= ****** >> **/ >> +#include >> #include >> #include >> #include >> @@ -672,7 +673,7 @@ char *xenbus_transaction_start(xenbus_transaction_t = *xbt) >> err =3D errmsg(rep); >> if (err) >> return err; >> - sscanf((char *)(rep + 1), "%u", xbt); >> + sscanf((char *)(rep + 1), "%lu", xbt); >> free(rep); >> return NULL; >> } >> @@ -769,7 +770,7 @@ domid_t xenbus_get_self_id(void) >> domid_t ret; >> = >> BUG_ON(xenbus_read(XBT_NIL, "domid", &dom_id)); >> - sscanf(dom_id, "%d", &ret); >> + sscanf(dom_id, "%"SCNd16, &ret); >> = >> return ret; >> } >> -- = >> 1.8.3.2 >>