On 10 January 2017 at 10:45, Augusto Mecking Caringi <augustocaringi@xxxxxxxxx> wrote: > In ca91cx42_slave_get function, the value pointed by vme_base pointer is > set through: > > *vme_base = ioread32(bridge->base + CA91CX42_VSI_BS[i]); > > So it must be dereferenced to be used in calculation of pci_base: > > *pci_base = (dma_addr_t)*vme_base + pci_offset; > > This bug was caught thanks to the following gcc warning: > > drivers/vme/bridges/vme_ca91cx42.c: In function ‘ca91cx42_slave_get’: > drivers/vme/bridges/vme_ca91cx42.c:467:14: warning: cast from pointer to > integer of different size [-Wpointer-to-int-cast] > *pci_base = (dma_addr_t)vme_base + pci_offset; > > Signed-off-by: Augusto Mecking Caringi <augustocaringi@xxxxxxxxx> Acked-By: Martyn Welch <martyn@xxxxxxxxxxxx> > --- > drivers/vme/bridges/vme_ca91cx42.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/vme/bridges/vme_ca91cx42.c b/drivers/vme/bridges/vme_ca91cx42.c > index 6b5ee89..7cc5122 100644 > --- a/drivers/vme/bridges/vme_ca91cx42.c > +++ b/drivers/vme/bridges/vme_ca91cx42.c > @@ -464,7 +464,7 @@ static int ca91cx42_slave_get(struct vme_slave_resource *image, int *enabled, > vme_bound = ioread32(bridge->base + CA91CX42_VSI_BD[i]); > pci_offset = ioread32(bridge->base + CA91CX42_VSI_TO[i]); > > - *pci_base = (dma_addr_t)vme_base + pci_offset; > + *pci_base = (dma_addr_t)*vme_base + pci_offset; > *size = (unsigned long long)((vme_bound - *vme_base) + granularity); > > *enabled = 0; > -- > 2.7.4 > _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel