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


Reply via email to