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

Re: [Xen-devel] [bug report] xen-pcifront: Xen PCI frontend driver.



On 25.06.19 14:31, Dan Carpenter wrote:
Hi Xen devs,

I get the following static checker warning:

        drivers/pci/xen-pcifront.c:107 schedule_pcifront_aer_op()
        warn: passing casted pointer '&pdev->sh_info->flags' to 'test_bit()' 32 
vs 64.

drivers/pci/xen-pcifront.c
    105  static inline void schedule_pcifront_aer_op(struct pcifront_device 
*pdev)
    106  {
    107          if (test_bit(_XEN_PCIB_active, (unsigned long 
*)&pdev->sh_info->flags)

->flags is a u32 so this cast only works on little endian systems.  I
don't know if that matters at all.  This driver has a bunch of similar
issues.  Is Xen x86 only?  It's pretty normal for Intel code to rely on
little endianness...

Xen is running on ARM, too. AFAIK it only supports little endian mode
for guests, though.


    108                  && !test_and_set_bit(_PDEVB_op_active, &pdev->flags)) {
    109                  dev_dbg(&pdev->xdev->dev, "schedule aer frontend 
job\n");
    110                  schedule_work(&pdev->op_work);
    111          }
    112  }

drivers/pci/xen-pcifront.c:107 schedule_pcifront_aer_op() warn: passing casted pointer 
'&pdev->sh_info->flags' to 'test_bit()' 32 vs 64.
drivers/pci/xen-pcifront.c:129 do_pci_op() warn: passing casted pointer 
'&pdev->sh_info->flags' to 'set_bit()' 32 vs 64.
drivers/pci/xen-pcifront.c:142 do_pci_op() warn: passing casted pointer 
'&pdev->sh_info->flags' to 'test_bit()' 32 vs 64.
drivers/pci/xen-pcifront.c:150 do_pci_op() warn: passing casted pointer 
'&pdev->sh_info->flags' to 'clear_bit()' 32 vs 64.
drivers/pci/xen-pcifront.c:162 do_pci_op() warn: passing casted pointer 
'&pdev->sh_info->flags' to 'test_bit()' 32 vs 64.
drivers/pci/xen-pcifront.c:670 pcifront_do_aer() warn: passing casted pointer 
'&pdev->sh_info->flags' to 'clear_bit()' 32 vs 64.
drivers/xen/mcelog.c:209 xen_mce_log() warn: passing casted pointer 
'&xen_mcelog.flags' to 'set_bit()' 32 vs 64.
drivers/xen/privcmd.c:350 mmap_batch_fn() warn: passing casted pointer 'gfnp' 
to 'xen_remap_domain_gfn_array()' 64 vs 32.
drivers/xen/privcmd.c:827 privcmd_ioctl_mmap_resource() warn: passing casted 
pointer 'pfns' to 'xen_remap_domain_mfn_array()' 64 vs 32.
drivers/xen/xen-pciback/conf_space.c:172 xen_pcibk_config_read() warn: passing 
casted pointer '&value' to 'pci_read_config_word()' 32 vs 16.
drivers/xen/xen-pciback/conf_space.c:57 conf_space_read() warn: passing casted 
pointer 'value' to 'field->u.w.read()' 32 vs 16.
drivers/xen/xen-pciback/pciback_ops.c:310 xen_pcibk_test_and_schedule_op() warn: passing 
casted pointer '&pdev->sh_info->flags' to 'test_bit()' 32 vs 64.
drivers/xen/xen-pciback/pciback_ops.c:316 xen_pcibk_test_and_schedule_op() warn: passing 
casted pointer '&pdev->sh_info->flags' to 'test_bit()' 32 vs 64.
drivers/xen/xen-pciback/pciback_ops.c:396 xen_pcibk_do_op() warn: passing casted pointer 
'&pdev->sh_info->flags' to 'clear_bit()' 32 vs 64.
drivers/xen/xen-pciback/pci_stub.c:731 common_process() warn: passing casted pointer 
'&sh_info->flags' to 'set_bit()' 32 vs 64.
drivers/xen/xen-pciback/pci_stub.c:736 common_process() warn: passing casted pointer 
'&sh_info->flags' to 'test_bit()' 32 vs 64.
drivers/xen/xen-pciback/pci_stub.c:741 common_process() warn: passing casted pointer 
'&sh_info->flags' to 'test_bit()' 32 vs 64.
drivers/xen/xen-pciback/pci_stub.c:745 common_process() warn: passing casted pointer 
'&sh_info->flags' to 'clear_bit()' 32 vs 64.
drivers/xen/xen-pciback/pci_stub.c:753 common_process() warn: passing casted pointer 
'&sh_info->flags' to 'test_bit()' 32 vs 64.
drivers/xen/xen-pciback/pci_stub.c:799 xen_pcibk_slot_reset() warn: passing casted pointer 
'&psdev->pdev->sh_info->flags' to 'test_bit()' 32 vs 64.
drivers/xen/xen-pciback/pci_stub.c:857 xen_pcibk_mmio_enabled() warn: passing casted pointer 
'&psdev->pdev->sh_info->flags' to 'test_bit()' 32 vs 64.
drivers/xen/xen-pciback/pci_stub.c:916 xen_pcibk_error_detected() warn: passing casted 
pointer '&psdev->pdev->sh_info->flags' to 'test_bit()' 32 vs 64.
drivers/xen/xen-pciback/pci_stub.c:969 xen_pcibk_error_resume() warn: passing casted pointer 
'&psdev->pdev->sh_info->flags' to 'test_bit()' 32 vs 64.

The sh_info->flags accesses would need to be modified in order to fix
the warnings. Either by adding *_bit32() variants to the kernel or by
using atomic() accesses instead.

Patches welcome. :-)


Juergen

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

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