On Fri, Aug 03, 2012 at 03:29:10PM -0700, Linus Torvalds wrote: > On Fri, Aug 3, 2012 at 3:23 PM, Tejun Heo <tj@xxxxxxxxxx> wrote: > > > > I actually meant an enclosing struct. When you're defining a struct > > member, simply putting the storage after a struct with var array > > should be good enough. If that doesn't work, quite a few things in > > the kernel will break. > > The unsigned member of a struct has to be the last one, so your struct > won't work. I suppose you mean unsized. I remember this working. Maybe I'm confusing it with zero-sized array. Hmm... gcc doesn't complain about the following. --std=c99 seems happy too. #include <stdio.h> struct A { int i; long ar[]; }; struct B { struct A a; long ar_storage[32]; }; int main(void) { printf("sizeof(A)=%zd sizeof(B)=%zd\n", sizeof(struct A), sizeof(struct B)); return 0; } $ ./a.out sizeof(A)=8 sizeof(B)=264 -- tejun -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>