提交 d768f32a 编写于 作者: T Thomas Huth 提交者: Michael S. Tsirkin

virtio: Fix typecast of pointer in vring_init()

The virtio_ring.h header is used in userspace programs (ie. QEMU),
too. Here we can not assume that sizeof(pointer) is the same as
sizeof(long), e.g. when compiling for Windows, so the typecast in
vring_init() should be done with (uintptr_t) instead of (unsigned long).
Signed-off-by: NThomas Huth <thuth@redhat.com>
Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
上级 908a5544
...@@ -31,6 +31,9 @@ ...@@ -31,6 +31,9 @@
* SUCH DAMAGE. * SUCH DAMAGE.
* *
* Copyright Rusty Russell IBM Corporation 2007. */ * Copyright Rusty Russell IBM Corporation 2007. */
#ifndef __KERNEL__
#include <stdint.h>
#endif
#include <linux/types.h> #include <linux/types.h>
#include <linux/virtio_types.h> #include <linux/virtio_types.h>
...@@ -143,7 +146,7 @@ static inline void vring_init(struct vring *vr, unsigned int num, void *p, ...@@ -143,7 +146,7 @@ static inline void vring_init(struct vring *vr, unsigned int num, void *p,
vr->num = num; vr->num = num;
vr->desc = p; vr->desc = p;
vr->avail = p + num*sizeof(struct vring_desc); vr->avail = p + num*sizeof(struct vring_desc);
vr->used = (void *)(((unsigned long)&vr->avail->ring[num] + sizeof(__virtio16) vr->used = (void *)(((uintptr_t)&vr->avail->ring[num] + sizeof(__virtio16)
+ align-1) & ~(align - 1)); + align-1) & ~(align - 1));
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册