From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754031AbdJRNaV (ORCPT ); Wed, 18 Oct 2017 09:30:21 -0400 Received: from mail-qt0-f196.google.com ([209.85.216.196]:50314 "EHLO mail-qt0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753903AbdJRNaO (ORCPT ); Wed, 18 Oct 2017 09:30:14 -0400 X-Google-Smtp-Source: ABhQp+RmrzL0+TMq5M/Jcatrhx8I9UOzX7X9AVXCxyuHzwhk71NSF0xpnHzyiaCbBFdNqkKuULP3MA== Date: Wed, 18 Oct 2017 06:30:10 -0700 From: Tejun Heo To: Nick Desaulniers Cc: Li Zefan , Johannes Weiner , cgroups@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] cgroup: reorder flexible array members of struct cgroup_root Message-ID: <20171018133010.GD1302522@devbig577.frc2.facebook.com> References: <20171017063322.11455-1-nick.desaulniers@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20171017063322.11455-1-nick.desaulniers@gmail.com> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hello, On Mon, Oct 16, 2017 at 11:33:21PM -0700, Nick Desaulniers wrote: > 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. 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; }; I think we should just silence the bogus warning. Thanks. -- tejun