[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v2] mini-os: Fix stubdom build failures on gcc 4.8



On 22/01/14 17:57, Samuel Thibault wrote:
> xenmail43267@xxxxxxxxx, le Wed 22 Jan 2014 11:41:11 -0600, a écrit :
>> From: Mike Neilsen <mneilsen@xxxxxxx>
>>
>> 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 <mneilsen@xxxxxxx>
> Acked-by: Samuel Thibault <samuel.thibault@xxxxxxxxxxxx>

Reviewed-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>

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 = 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;
>> 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 
>> 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);
>> 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_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;
>>  
>> diff --git a/extras/mini-os/xenbus/xenbus.c b/extras/mini-os/xenbus/xenbus.c
>> index ee1691b..c5d9b02 100644
>> --- a/extras/mini-os/xenbus/xenbus.c
>> +++ b/extras/mini-os/xenbus/xenbus.c
>> @@ -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;
>>  }
>> -- 
>> 1.8.3.2
>>


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.