On 24 September 2014 01:46, Fam Zheng <[email protected]> wrote: > On Wed, 09/24 07:20, Stefan Weil wrote: >> Compiler warning (w32, w64): >> >> include/hw/virtio/virtio_ring.h:142:26: warning: >> cast from pointer to integer of different size [-Wpointer-to-int-cast] >> >> When sizeof(long) < sizeof(void *), this is not only a warning but a >> real program error. >> >> Add also missing blanks in the same statement. >> >> Signed-off-by: Stefan Weil <[email protected]> >> --- >> >> Peter, could you please apply this bug fix directly without pull request?
Applied to master, thanks. >> diff --git a/include/hw/virtio/virtio_ring.h >> b/include/hw/virtio/virtio_ring.h >> index 8f58bc9..0b42e6e 100644 >> --- a/include/hw/virtio/virtio_ring.h >> +++ b/include/hw/virtio/virtio_ring.h >> @@ -139,8 +139,8 @@ static inline void vring_init(struct vring *vr, unsigned >> int num, void *p, >> vr->num = num; >> vr->desc = p; >> vr->avail = p + num*sizeof(struct vring_desc); >> - vr->used = (void *)(((unsigned long)&vr->avail->ring[num] + >> sizeof(uint16_t) >> - + align-1) & ~(align - 1)); >> + vr->used = (void *)(((uintptr_t)&vr->avail->ring[num] + sizeof(uint16_t) >> + + align - 1) & ~(align - 1)); >> } >> >> static inline unsigned vring_size(unsigned int num, unsigned long align) >> -- >> 1.7.10.4 >> > > That was from copy&paste /usr/include/linux/virtio_ring.h. The patch looks > good > to me, should linux also need this fix? In Linux the "long" type is always the same as the size of a pointer; it's only Windows that went for the LLP64 model rather than LP64. thanks -- PMM
