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]>
---
 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


Reply via email to