On Fri 11-09-26 14:58:39, Christian Brauner wrote:
> The KUnit test suite turned insert_extent() and sort_idmaps() into global
> symbols and declared them in include/linux/user_namespace.h. That header
> is pulled in nearly everywhere through linux/cgroup.h and the btrfs
> self-tests carry a static insert_extent() of their own, so any config
> with both test suites enabled fails to build:
> 
>   fs/btrfs/tests/inode-tests.c:16:13: error: conflicting types for 
> 'insert_extent'
>   include/linux/user_namespace.h:212:12: note: previous declaration of 
> 'insert_extent'
> 
> A global symbol needs a prefix. Rename them to
> uid_gid_map_insert_extent() and uid_gid_map_sort(). It's the better name
> anyway.
> 
> No functional changes.
> 
> Fixes: f6f1a2496ba5 ("userns: Add KUnit test suite for uid_gid_map")
> Reported-by: kernel test robot <[email protected]>
> Closes: 
> https://lore.kernel.org/oe-kbuild-all/[email protected]/
> Closes: 
> https://lore.kernel.org/oe-kbuild-all/[email protected]/
> Signed-off-by: Christian Brauner (Amutable) <[email protected]>

Sure. Feel free to add:

Reviewed-by: Jan Kara <[email protected]>

                                                                Honza

> ---
>  include/linux/user_namespace.h   |  5 +++--
>  kernel/tests/user_ns_map_kunit.c |  6 +++---
>  kernel/user_namespace.c          | 19 ++++++++++---------
>  3 files changed, 16 insertions(+), 14 deletions(-)
> 
> diff --git a/include/linux/user_namespace.h b/include/linux/user_namespace.h
> index 633157781edc..637cd7e91a45 100644
> --- a/include/linux/user_namespace.h
> +++ b/include/linux/user_namespace.h
> @@ -209,8 +209,9 @@ extern bool current_in_userns(const struct user_namespace 
> *target_ns);
>  struct ns_common *ns_get_owner(struct ns_common *ns);
>  
>  #if IS_ENABLED(CONFIG_USER_NS_MAP_KUNIT_TEST)
> -extern int insert_extent(struct uid_gid_map *map, struct uid_gid_extent 
> *extent);
> -extern int sort_idmaps(struct uid_gid_map *map);
> +extern int uid_gid_map_insert_extent(struct uid_gid_map *map,
> +                                  struct uid_gid_extent *extent);
> +extern int uid_gid_map_sort(struct uid_gid_map *map);
>  #endif /* CONFIG_USER_NS_MAP_KUNIT_TEST */
>  
>  #else
> diff --git a/kernel/tests/user_ns_map_kunit.c 
> b/kernel/tests/user_ns_map_kunit.c
> index 24c21e43a36c..033dccc6a535 100644
> --- a/kernel/tests/user_ns_map_kunit.c
> +++ b/kernel/tests/user_ns_map_kunit.c
> @@ -24,7 +24,7 @@ static void user_ns_map_insert(struct kunit *test)
>               extent.lower_first = i * 100;
>               extent.count = 5;
>  
> -             ret = insert_extent(&map, &extent);
> +             ret = uid_gid_map_insert_extent(&map, &extent);
>               KUNIT_ASSERT_EQ(test, ret, 0);
>       }
>  
> @@ -54,14 +54,14 @@ static void user_ns_map_insert_extended(struct kunit 
> *test)
>               extent.lower_first = value * 100;
>               extent.count = 5;
>  
> -             ret = insert_extent(&map, &extent);
> +             ret = uid_gid_map_insert_extent(&map, &extent);
>               KUNIT_ASSERT_EQ(test, ret, 0);
>       }
>  
>       KUNIT_EXPECT_EQ(test, map.nr_extents, NR_EXTENTS);
>  
>       /* Now sort the map to set up reverse mapping */
> -     ret = sort_idmaps(&map);
> +     ret = uid_gid_map_sort(&map);
>       KUNIT_ASSERT_EQ(test, ret, 0);
>       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, map.reverse);
>  
> diff --git a/kernel/user_namespace.c b/kernel/user_namespace.c
> index f9cbb4b92b48..98b0279b6cc6 100644
> --- a/kernel/user_namespace.c
> +++ b/kernel/user_namespace.c
> @@ -780,12 +780,13 @@ static bool mappings_overlap(struct uid_gid_map 
> *new_map,
>  }
>  
>  /*
> - * insert_extent - Safely insert a new idmap extent into struct uid_gid_map.
> + * uid_gid_map_insert_extent - Safely insert a new idmap extent into
> + * struct uid_gid_map.
>   * Takes care to allocate a 4K block of memory if the number of mappings 
> exceeds
>   * UID_GID_MAP_MAX_BASE_EXTENTS.
>   */
> -VISIBLE_IF_KUNIT int insert_extent(struct uid_gid_map *map,
> -                                struct uid_gid_extent *extent)
> +VISIBLE_IF_KUNIT int uid_gid_map_insert_extent(struct uid_gid_map *map,
> +                                            struct uid_gid_extent *extent)
>  {
>       struct uid_gid_extent *dest;
>  
> @@ -821,7 +822,7 @@ VISIBLE_IF_KUNIT int insert_extent(struct uid_gid_map 
> *map,
>       *dest = *extent;
>       return 0;
>  }
> -EXPORT_SYMBOL_IF_KUNIT(insert_extent);
> +EXPORT_SYMBOL_IF_KUNIT(uid_gid_map_insert_extent);
>  
>  /* cmp function to sort() forward mappings */
>  static int cmp_extents_forward(const void *a, const void *b)
> @@ -854,10 +855,10 @@ static int cmp_extents_reverse(const void *a, const 
> void *b)
>  }
>  
>  /*
> - * sort_idmaps - Sorts an array of idmap entries.
> + * uid_gid_map_sort - Sorts an array of idmap entries.
>   * Can only be called if number of mappings exceeds 
> UID_GID_MAP_MAX_BASE_EXTENTS.
>   */
> -VISIBLE_IF_KUNIT int sort_idmaps(struct uid_gid_map *map)
> +VISIBLE_IF_KUNIT int uid_gid_map_sort(struct uid_gid_map *map)
>  {
>       if (map->nr_extents <= UID_GID_MAP_MAX_BASE_EXTENTS)
>               return 0;
> @@ -878,7 +879,7 @@ VISIBLE_IF_KUNIT int sort_idmaps(struct uid_gid_map *map)
>  
>       return 0;
>  }
> -EXPORT_SYMBOL_IF_KUNIT(sort_idmaps);
> +EXPORT_SYMBOL_IF_KUNIT(uid_gid_map_sort);
>  
>  /**
>   * verify_root_map() - check the uid 0 mapping
> @@ -1047,7 +1048,7 @@ static ssize_t map_write(struct file *file, const char 
> __user *buf,
>                   (next_line != NULL))
>                       goto out;
>  
> -             ret = insert_extent(&new_map, &extent);
> +             ret = uid_gid_map_insert_extent(&new_map, &extent);
>               if (ret < 0)
>                       goto out;
>               ret = -EINVAL;
> @@ -1091,7 +1092,7 @@ static ssize_t map_write(struct file *file, const char 
> __user *buf,
>        * If we want to use binary search for lookup, this clones the extent
>        * array and sorts both copies.
>        */
> -     ret = sort_idmaps(&new_map);
> +     ret = uid_gid_map_sort(&new_map);
>       if (ret < 0)
>               goto out;
>  
> -- 
> 2.53.0
> 
-- 
Jan Kara <[email protected]>
SUSE Labs, CR

Reply via email to