>       uint64_t val = cqe->res; // assuming non-error here
> 
>       if (cqe->flags & IORING_CQE_F_ZONE_FOO)
>               val |= (cqe->flags >> 16) << 32ULL;

Jens, ULL in shift doesn't do anything for widening the result.
You need

        val |= (uint64_t)(cqe->flags >> 16) << 32;

Reply via email to