On Mon, Apr 04, 2022 at 03:19:48PM +0900, Masahiro Yamada wrote: > Arnd mentioned a limitation when including <stdint.h> from UAPI > headers. [1] > > Besides, I'd like exported headers to be as compliant with the > traditional C as possible. > > In fact, the UAPI headers are compile-tested with -std=c90 (see > usr/include/Makefile) even though the kernel itself is now built > with -std=gnu11. > > Currently, include/uapi/linux/virtio_ring.h includes <stdint.h> > presumably because it uses uintptr_t. > > Replace it with __kernel_uintptr_t, and stop including <stdint.h>. > > [1]: https://lore.kernel.org/all/CAK8P3a0bz8XYJOsmND2=CT_oTDmGMJGaRo9+QMroEhpekSMEaQ@xxxxxxxxxxxxxx/ > > Signed-off-by: Masahiro Yamada <masahiroy@xxxxxxxxxx> Acked-by: Michael S. Tsirkin <mst@xxxxxxxxxx> > --- > > include/uapi/linux/virtio_ring.h | 6 ++---- > 1 file changed, 2 insertions(+), 4 deletions(-) > > diff --git a/include/uapi/linux/virtio_ring.h b/include/uapi/linux/virtio_ring.h > index 476d3e5c0fe7..6329e4ff35f4 100644 > --- a/include/uapi/linux/virtio_ring.h > +++ b/include/uapi/linux/virtio_ring.h > @@ -31,9 +31,7 @@ > * SUCH DAMAGE. > * > * Copyright Rusty Russell IBM Corporation 2007. */ > -#ifndef __KERNEL__ > -#include <stdint.h> > -#endif > + > #include <linux/types.h> > #include <linux/virtio_types.h> > > @@ -196,7 +194,7 @@ static inline void vring_init(struct vring *vr, unsigned int num, void *p, > vr->num = num; > vr->desc = p; > vr->avail = (struct vring_avail *)((char *)p + num * sizeof(struct vring_desc)); > - vr->used = (void *)(((uintptr_t)&vr->avail->ring[num] + sizeof(__virtio16) > + vr->used = (void *)(((__kernel_uintptr_t)&vr->avail->ring[num] + sizeof(__virtio16) > + align-1) & ~(align - 1)); > } > > -- > 2.32.0 > >