Thread (11 messages) 11 messages, 4 authors, 2017-10-26

Re: [PATCH] cgroup: reorder flexible array members of struct cgroup_root

From: Nick Desaulniers <hidden>
Date: 2017-10-20 07:15:59
Also in: lkml

On Wed, Oct 18, 2017 at 6:30 AM, Tejun Heo [off-list ref] wrote:
On Mon, Oct 16, 2017 at 11:33:21PM -0700, Nick Desaulniers wrote:
quoted
When compiling arch/x86/boot/compressed/eboot.c with HOSTCC=clang, the
following warning is observed:

./include/linux/cgroup-defs.h:391:16: warning: field 'cgrp' with
variable sized type 'struct cgroup' not at the end of a struct or class
is a GNU extension [-Wgnu-variable-sized-type-not-at-end]
        struct cgroup cgrp;
                      ^
Flexible array members are a C99 feature, but must be the last member of
a struct. Structs with flexible members composed in other structs must
also be the final members, unless using GNU C extensions.

struct cgroup_root's member cgrp is a struct cgroup, struct cgroup's
member ancestor_ids is a flexible member.
This is silly tho.  We know the the root group embedded there won't
have any ancestor_ids.
Sure, but struct cgroup_root is still declared as having a struct
cgroup not declared as the final member.
Also, in general, nothing prevents us from
doing something like the following.

        struct outer_struct {
                blah blah;
                struct inner_struct_with_flexible_array_member inner;
                unsigned long storage_for_flexible_array[NR_ENTRIES];
                blah blah;
        };
At that point, then why have the struct with flexible array member in
the first place?
quoted
or specific location of the member cgrp within struct cgroup_root AFAICT.
I think we should just silence the bogus warning.
Is the order of the members actually important?  Otherwise it seems
that we're taking advantage of a GNU C extension for no real reason,
which is what I'm trying to avoid.  Please reconsider.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help