On Sat, Sep 19, 2020 at 03:45:56AM +0100, Matthew Wilcox wrote: > On Fri, Sep 18, 2020 at 06:39:57PM -0400, Arvind Sankar wrote: > > On Fri, Sep 18, 2020 at 02:18:20PM -0700, Linus Torvalds wrote: > > > On Fri, Sep 18, 2020 at 2:00 PM Arvind Sankar <nivedita@xxxxxxxxxxxx> wrote: > > > > > > > > You could just assert that offsetof(typeof(s),flex) == sizeof(s), no? > > > > > > No, because the whole point is that I want that "sizeof(s)" to *WARN*. > > > > Ouch, offsetof() and sizeof() will give different results in the > > presence of alignment padding. > > > > https://godbolt.org/z/rqnxTK > > We really should be using offsetof() then. It's harmless because we're > currently overallocating, not underallocating. The test case I did was: > I wonder if there are cases where we know the total size, and are working out the number of elements in the flexible array by doing size - sizeof(s). Would a macro to do the inverse of struct_size(), i.e. get the count knowing the total size be useful?