mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
mini-os: Fix stubdom build failures on gcc 4.8
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. Coverity-IDs: 1055807 1055808 1055809 1055810 Signed-off-by: Mike Neilsen <mneilsen@acm.org> Acked-by: Samuel Thibault <samuel.thibault@ens-lyon.org> Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com> Acked-by: Ian Campbell <ian.campbell@citrix.com>
This commit is contained in:
1 parent
9c7e789a1b
commit
5fd5df0871
4 files changed
+18
-17
No files matched your search
@@ -105,7 +105,7 @@ again:
|
||||
free(err);
|
||||
}
|
||||
|
||||
err = xenbus_printf(xbt, nodename, "page-ref","%u", virt_to_mfn(s));
|
||||
err = xenbus_printf(xbt, nodename, "page-ref","%lu", virt_to_mfn(s));
|
||||
if (err) {
|
||||
message = "writing page-ref";
|
||||
goto abort_transaction;
|
||||
@@ -468,7 +468,7 @@ again:
|
||||
free(err);
|
||||
}
|
||||
|
||||
err = xenbus_printf(xbt, nodename, "page-ref","%u", virt_to_mfn(s));
|
||||
err = xenbus_printf(xbt, nodename, "page-ref","%lu", virt_to_mfn(s));
|
||||
if (err) {
|
||||
message = "writing page-ref";
|
||||
goto abort_transaction;
|
||||
|
||||
@@ -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 domain, 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 long fun,
|
||||
unsigned int bus, unsigned int slot, unsigned int fun,
|
||||
unsigned int off, unsigned int size, unsigned int *val);
|
||||
int pcifront_conf_write(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,
|
||||
unsigned int off, unsigned int size, unsigned int val);
|
||||
int pcifront_enable_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_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);
|
||||
@@ -384,7 +384,7 @@ int pcifront_physical_to_virtual (struct pcifront_dev *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 xen_pci_op *op)
|
||||
|
||||
int pcifront_conf_read(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,
|
||||
unsigned int off, unsigned int size, unsigned int *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 long fun,
|
||||
unsigned int bus, unsigned int slot, unsigned int fun,
|
||||
unsigned int off, unsigned int size, unsigned int 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 long fun)
|
||||
unsigned int bus, unsigned int slot, unsigned int 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;
|
||||
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
*
|
||||
****************************************************************************
|
||||
**/
|
||||
#include <inttypes.h>
|
||||
#include <mini-os/os.h>
|
||||
#include <mini-os/mm.h>
|
||||
#include <mini-os/traps.h>
|
||||
@@ -672,7 +673,7 @@ char *xenbus_transaction_start(xenbus_transaction_t *xbt)
|
||||
err = 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;
|
||||
}
|
||||
|
||||