On 13/07/20 17:54, Vitaly Kuznetsov wrote: > Which means that userspace built for the old kernel will potentially send in > garbage for the new 'flags' field due to it being uninitialized stack data, > even with the layout after this patch. It might as well send it now if the code didn't attempt to zero the struct before filling it in (this is another good reason to use a "flags" field to say what's been filled in). I don't think special casing padding is particularly useful; C11 for example requires designated initializers to fill padding with zero bits[1] and even before it's always been considered good behavior to use memset. Paolo [1] It says: "If an object that has static or thread storage duration is not initialized explicitly, then [...] any padding is initialized to zero bits" and even for non-static objects, "If there are fewer initializers in a brace-enclosed list than there are elements or members of an aggregate [...] the remainder of the aggregate shall be initialized implicitly the same as objects that have static storage duration".