Yeah, we should be cautious in changing the uAPI header as it can break the
userspace applications. Annotating the members that need packed attribute seems
like the way forward to me.
When using "__u64 value;" in place of osf3-6, I saw the compiler padded 4 bytes, so __packed was needed for me to get correct __u64 value. I thought even the existing structure utp_upiu_query_v4_0 may need __packed on some fields where the driver reads the returned data in order to be safe across all architectures. However, without evidence of an actual failure, I didn't touch the existing structure. Only raised potential issue for discussion.
Though, I'd like to understand which architecture has the alignment constraint
in this structure. Only if an architecture requires 8 byte alignment for __be32
would be a problem. That too only for osf7 and reserved. But I'm not aware of
such architectures in use.