On 19.10.2017 22:11, Christian Brauner wrote: > - Add a struct containing two pointer to extents and wrap both the static > extent > array and the struct into a union. This is done in preparation for bumping > the > {g,u}idmap limits for user namespaces. > - Add brackets around anonymous union when using designated initializers to > initialize members in order to please gcc <= 4.4. > > Signed-off-by: Christian Brauner <christian.brau...@ubuntu.com> > --- > Changelog 2017-10-19: > * kernel/user.c: Use brackets around anonymous union when using designated > initializers to initialize members. This is done to please gcc <= 4.4. > --- > include/linux/user_namespace.h | 18 +++++++++++++----- > kernel/user.c | 30 ++++++++++++++++++------------ > 2 files changed, 31 insertions(+), 17 deletions(-) > > diff --git a/include/linux/user_namespace.h b/include/linux/user_namespace.h > index c18e01252346..7c83d7f6289b 100644 > --- a/include/linux/user_namespace.h > +++ b/include/linux/user_namespace.h > @@ -12,13 +12,21 @@ > > #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; > - struct uid_gid_extent { > - u32 first; > - u32 lower_first; > - u32 count; > - } extent[UID_GID_MAP_MAX_EXTENTS]; > + union { > + struct uid_gid_extent extent[UID_GID_MAP_MAX_EXTENTS]; > + struct { > + struct uid_gid_extent *forward; > + struct uid_gid_extent *reverse; > + }; > + }; > }; > > #define USERNS_SETGROUPS_ALLOWED 1UL > diff --git a/kernel/user.c b/kernel/user.c > index 00281add65b2..9a20acce460d 100644 > --- a/kernel/user.c > +++ b/kernel/user.c > @@ -26,26 +26,32 @@ > struct user_namespace init_user_ns = { > .uid_map = { > .nr_extents = 1, > - .extent[0] = { > - .first = 0, > - .lower_first = 0, > - .count = 4294967295U, > + { > + .extent[0] = { > + .first = 0, > + .lower_first = 0, > + .count = 4294967295U,
nit: ULONG_MAX ? > + }, > }, > }, > .gid_map = { > .nr_extents = 1, > - .extent[0] = { > - .first = 0, > - .lower_first = 0, > - .count = 4294967295U, > + { > + .extent[0] = { > + .first = 0, > + .lower_first = 0, > + .count = 4294967295U, > + }, > }, > }, > .projid_map = { > .nr_extents = 1, > - .extent[0] = { > - .first = 0, > - .lower_first = 0, > - .count = 4294967295U, > + { > + .extent[0] = { > + .first = 0, > + .lower_first = 0, > + .count = 4294967295U, > + }, > }, > }, > .count = ATOMIC_INIT(3), >