diff --git a/drivers/virtio/ring/include/virtio/virtio_ring.h b/drivers/virtio/ring/include/virtio/virtio_ring.h index 78bafdf841..e5da3afeb5 100644 --- a/drivers/virtio/ring/include/virtio/virtio_ring.h +++ b/drivers/virtio/ring/include/virtio/virtio_ring.h @@ -157,7 +157,9 @@ struct vring { * versa. They are at the end for backwards compatibility. */ #define vring_used_event(vr) ((vr)->avail->ring[(vr)->num]) -#define vring_avail_event(vr) (*(__virtio16 *)&(vr)->used->ring[(vr)->num]) +typedef __virtio_le16 __may_alias __virtio_le16_ma; +#define vring_avail_event(vr) \ + (*(__virtio_le16_ma *)&(vr)->used->ring[(vr)->num]) static inline void vring_init(struct vring *vr, unsigned int num, uint8_t *p, unsigned long align) diff --git a/include/uk/essentials.h b/include/uk/essentials.h index 43c7ed30f4..22b8ae518f 100644 --- a/include/uk/essentials.h +++ b/include/uk/essentials.h @@ -99,6 +99,9 @@ extern "C" { #ifndef __check_result #define __check_result __attribute__((warn_unused_result)) #endif +#ifndef __may_alias +#define __may_alias __attribute__((may_alias)) +#endif #ifndef __alias #define __alias(old, new) \