On 12/21/22 14:10, Marcel Holtmann wrote:
static inline void vring_set_avail_event(VduseVirtq *vq, uint16_t val) { - *((uint16_t *)&vq->vring.used->ring[vq->vring.num]) = htole16(val); + uint16_t *avail; + + avail = (uint16_t *)&vq->vring.used->ring[vq->vring.num]; + *avail = htole16(val);
That this doesn't warn is basically a compiler bug. Please use memcpy instead, i.e. uint16_t val_le = htole16(val); memcpy(&vq->vring.used->ring[vq->vring.num]), &val_le, sizeof(uint16_t)); Paolo