lkml.org 
[lkml]   [2017]   [Oct]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 1/2 v6] user namespace: use union in {g,u}idmap struct
    Date
    - 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.brauner@ubuntu.com>
    ---
    Changelog 2017-10-24:
    * no changes

    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
    \
     
     \ /
      Last update: 2017-10-25 00:05    [W:2.692 / U:0.028 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site