From: ebiederm@xmission.com (Eric W. Biederman)
To: Christian Brauner <christian.brauner@canonical.com>
Cc: kbuild test robot <lkp@intel.com>,
Christian Brauner <christian.brauner@ubuntu.com>,
kbuild-all@01.org, linux-kernel@vger.kernel.org,
stgraber@ubuntu.com, tycho@tycho.ws, serge@hallyn.com
Subject: Re: [PATCH 1/2 v3] user namespace: use union in {g,u}idmap struct
Date: Wed, 18 Oct 2017 19:48:14 -0500 [thread overview]
Message-ID: <87r2u0hsj5.fsf@xmission.com> (raw)
In-Reply-To: <20171018234226.wgfpp3cybuaxzvgu@gmail.com> (Christian Brauner's message of "Thu, 19 Oct 2017 01:42:27 +0200")
Christian Brauner <christian.brauner@canonical.com> writes:
> I'm not sure why the build is complaining about how the union is initialized
> here. This looks legitimate to me and I can't reproduce this locally with or
> without the appended config. The struct introduced here is:
>
> #define UID_GID_MAP_MAX_EXTENTS 5
>
> struct uid_gid_extent {
> u32 first;
> u32 lower_first;
> u32 count;
> };
>
> struct uid_gid_map { /* 64 bytes -- 1 cache line */
> u32 nr_extents;
> union {
> struct uid_gid_extent extent[UID_GID_MAP_MAX_EXTENTS];
> struct {
> struct uid_gid_extent *forward;
> struct uid_gid_extent *reverse;
> };
> };
> };
>
> And the initialization in kernel/user.c which I didn't change looks correct.
> But maybe I'm missing the point.
You may want to check your compiler version this feels like a compiler
dependent error.
It looks like gcc isn't happy about not having braces for the anonymous
union of extent and the anonymouns structure that holds forward and
reverse.
FYI since I am commenting. I took a quick skim through your code today
and at first glance everything looks good. The performance is nice and
fast, and the changes look reasonable at first glance.
I think there are some nits that can be picked but nothing yet that
indicates the code is working incorrectly.
Eric
> On Thu, Oct 19, 2017 at 06:51:48AM +0800, kbuild test robot wrote:
>> Hi Christian,
>>
>> [auto build test ERROR on linus/master]
>> [also build test ERROR on v4.14-rc5 next-20171017]
>> [if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
>>
>> url: https://github.com/0day-ci/linux/commits/Christian-Brauner/user-namespace-use-union-in-g-u-idmap-struct/20171019-022142
>> config: x86_64-randconfig-a0-10190527 (attached as .config)
>> compiler: gcc-4.4 (Debian 4.4.7-8) 4.4.7
>> reproduce:
>> # save the attached .config to linux build tree
>> make ARCH=x86_64
>>
>> All error/warnings (new ones prefixed by >>):
>>
>> >> kernel/user.c:29: error: unknown field 'extent' specified in initializer
>> >> kernel/user.c:30: error: unknown field 'first' specified in initializer
>> >> kernel/user.c:30: warning: missing braces around initializer
>> kernel/user.c:30: warning: (near initialization for 'init_user_ns.uid_map.<anonymous>.extent')
>> >> kernel/user.c:31: error: unknown field 'lower_first' specified in initializer
>> >> kernel/user.c:31: warning: excess elements in union initializer
>> kernel/user.c:31: warning: (near initialization for 'init_user_ns.uid_map.<anonymous>')
>> >> kernel/user.c:32: error: unknown field 'count' specified in initializer
>> kernel/user.c:32: warning: excess elements in union initializer
>> kernel/user.c:32: warning: (near initialization for 'init_user_ns.uid_map.<anonymous>')
>> kernel/user.c:37: error: unknown field 'extent' specified in initializer
>> kernel/user.c:38: error: unknown field 'first' specified in initializer
>> kernel/user.c:39: error: unknown field 'lower_first' specified in initializer
>> kernel/user.c:39: warning: excess elements in union initializer
>> kernel/user.c:39: warning: (near initialization for 'init_user_ns.gid_map.<anonymous>')
>> kernel/user.c:40: error: unknown field 'count' specified in initializer
>> kernel/user.c:40: warning: excess elements in union initializer
>> kernel/user.c:40: warning: (near initialization for 'init_user_ns.gid_map.<anonymous>')
>> kernel/user.c:45: error: unknown field 'extent' specified in initializer
>> kernel/user.c:46: error: unknown field 'first' specified in initializer
>> kernel/user.c:47: error: unknown field 'lower_first' specified in initializer
>> kernel/user.c:47: warning: excess elements in union initializer
>> kernel/user.c:47: warning: (near initialization for 'init_user_ns.projid_map.<anonymous>')
>> kernel/user.c:48: error: unknown field 'count' specified in initializer
>> kernel/user.c:48: warning: excess elements in union initializer
>> kernel/user.c:48: warning: (near initialization for 'init_user_ns.projid_map.<anonymous>')
>>
>> vim +/lower_first +31 kernel/user.c
>>
>> ^1da177e4 Linus Torvalds 2005-04-16 21
>> 59607db36 Serge E. Hallyn 2011-03-23 22 /*
>> 59607db36 Serge E. Hallyn 2011-03-23 23 * userns count is 1 for root user, 1 for init_uts_ns,
>> 59607db36 Serge E. Hallyn 2011-03-23 24 * and 1 for... ?
>> 59607db36 Serge E. Hallyn 2011-03-23 25 */
>> aee16ce73 Pavel Emelyanov 2008-02-08 26 struct user_namespace init_user_ns = {
>> 22d917d80 Eric W. Biederman 2011-11-17 27 .uid_map = {
>> 22d917d80 Eric W. Biederman 2011-11-17 28 .nr_extents = 1,
>> 22d917d80 Eric W. Biederman 2011-11-17 @29 .extent[0] = {
>> 22d917d80 Eric W. Biederman 2011-11-17 @30 .first = 0,
>> 22d917d80 Eric W. Biederman 2011-11-17 @31 .lower_first = 0,
>> 4b06a81f1 Eric W. Biederman 2012-05-19 @32 .count = 4294967295U,
>> 22d917d80 Eric W. Biederman 2011-11-17 33 },
>> 22d917d80 Eric W. Biederman 2011-11-17 34 },
>> 22d917d80 Eric W. Biederman 2011-11-17 35 .gid_map = {
>> 22d917d80 Eric W. Biederman 2011-11-17 36 .nr_extents = 1,
>> 22d917d80 Eric W. Biederman 2011-11-17 37 .extent[0] = {
>> 22d917d80 Eric W. Biederman 2011-11-17 38 .first = 0,
>> 22d917d80 Eric W. Biederman 2011-11-17 39 .lower_first = 0,
>> 4b06a81f1 Eric W. Biederman 2012-05-19 40 .count = 4294967295U,
>> 22d917d80 Eric W. Biederman 2011-11-17 41 },
>> 22d917d80 Eric W. Biederman 2011-11-17 42 },
>> f76d207a6 Eric W. Biederman 2012-08-30 43 .projid_map = {
>> f76d207a6 Eric W. Biederman 2012-08-30 44 .nr_extents = 1,
>> f76d207a6 Eric W. Biederman 2012-08-30 45 .extent[0] = {
>> f76d207a6 Eric W. Biederman 2012-08-30 46 .first = 0,
>> f76d207a6 Eric W. Biederman 2012-08-30 47 .lower_first = 0,
>> f76d207a6 Eric W. Biederman 2012-08-30 48 .count = 4294967295U,
>> f76d207a6 Eric W. Biederman 2012-08-30 49 },
>> f76d207a6 Eric W. Biederman 2012-08-30 50 },
>> c61a2810a Eric W. Biederman 2012-12-28 51 .count = ATOMIC_INIT(3),
>> 783291e69 Eric W. Biederman 2011-11-17 52 .owner = GLOBAL_ROOT_UID,
>> 783291e69 Eric W. Biederman 2011-11-17 53 .group = GLOBAL_ROOT_GID,
>> 435d5f4bb Al Viro 2014-10-31 54 .ns.inum = PROC_USER_INIT_INO,
>> 33c429405 Al Viro 2014-11-01 55 #ifdef CONFIG_USER_NS
>> 33c429405 Al Viro 2014-11-01 56 .ns.ops = &userns_operations,
>> 33c429405 Al Viro 2014-11-01 57 #endif
>> 9cc46516d Eric W. Biederman 2014-12-02 58 .flags = USERNS_INIT_FLAGS,
>> 6bd364d82 Xiao Guangrong 2013-12-13 59 #ifdef CONFIG_PERSISTENT_KEYRINGS
>> 6bd364d82 Xiao Guangrong 2013-12-13 60 .persistent_keyring_register_sem =
>> 6bd364d82 Xiao Guangrong 2013-12-13 61 __RWSEM_INITIALIZER(init_user_ns.persistent_keyring_register_sem),
>> f36f8c75a David Howells 2013-09-24 62 #endif
>> aee16ce73 Pavel Emelyanov 2008-02-08 63 };
>> aee16ce73 Pavel Emelyanov 2008-02-08 64 EXPORT_SYMBOL_GPL(init_user_ns);
>> aee16ce73 Pavel Emelyanov 2008-02-08 65
>>
>> :::::: The code at line 31 was first introduced by commit
>> :::::: 22d917d80e842829d0ca0a561967d728eb1d6303 userns: Rework the user_namespace adding uid/gid mapping support
>>
>> :::::: TO: Eric W. Biederman <ebiederm@xmission.com>
>> :::::: CC: Eric W. Biederman <ebiederm@xmission.com>
>>
>> ---
>> 0-DAY kernel test infrastructure Open Source Technology Center
>> https://lists.01.org/pipermail/kbuild-all Intel Corporation
next prev parent reply other threads:[~2017-10-19 0:48 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-10-16 15:34 [PATCH 1/2 v3] user namespace: use union in {g,u}idmap struct Christian Brauner
2017-10-16 15:34 ` [PATCH 2/2 v3] user namespaces: bump idmap limits to 340 Christian Brauner
2017-10-18 22:51 ` [PATCH 1/2 v3] user namespace: use union in {g,u}idmap struct kbuild test robot
2017-10-18 23:42 ` Christian Brauner
2017-10-19 0:48 ` Eric W. Biederman [this message]
2017-10-19 16:15 ` Christian Brauner
2017-10-19 16:38 ` Eric W. Biederman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87r2u0hsj5.fsf@xmission.com \
--to=ebiederm@xmission.com \
--cc=christian.brauner@canonical.com \
--cc=christian.brauner@ubuntu.com \
--cc=kbuild-all@01.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lkp@intel.com \
--cc=serge@hallyn.com \
--cc=stgraber@ubuntu.com \
--cc=tycho@tycho.ws \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.