On Mon, Oct 23, 2017 at 09:45:34AM +0300, Nikolay Borisov wrote:
> 
> 
> On 23.10.2017 09:39, Nikolay Borisov wrote:
> > 
> > 
> > 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 ?
> 
> Well, actually UINT_MAX

This is not actually code I need to touch. This patch really only exists for the
sake of preventing gcc <= 4.4 from complaining by placing the union inside of
additional brackets. The type for here is u32. Since this was added by Eric I'm
assuming - for now - that he had a reason to hardcode this number rather than
using UINT_MAX.

Reply via email to