In the case of a structure embedding another structure, both sharing the same memory area, a reference to the inner structure will not prevent the outer structure from being garbage-collected. Examples are struct stat (containing structures for modification times) and plain C implementations of class inheritance or mixins like linked list membership.
There's some documentation indicating that CFFI can't be aware of pointers created by C code, but when dereferencing outer.inner, CFFI creates a CData object that can be managed. I propose that this pointer should keep the outer struct alive. This will ensure consistency, in that an obj.member reference will stay available both in the case of nested structs and structs allocated by malloc or ffi.new.