- 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 <[email protected]>
---
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,
+                       },
                },
        },
        .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),
-- 
2.14.1

Reply via email to