]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
mnt_idmapping: Use kmemdup_array instead of kmemdup for multiple allocation
authorYu Jiaoliang <yujiaoliang@vivo.com>
Fri, 23 Aug 2024 01:55:41 +0000 (09:55 +0800)
committerChristian Brauner <brauner@kernel.org>
Fri, 30 Aug 2024 06:22:41 +0000 (08:22 +0200)
Let the kememdup_array() take care about multiplication and possible
overflows.

v2:Add a new modification for reverse array.

Signed-off-by: Yu Jiaoliang <yujiaoliang@vivo.com>
Link: https://lore.kernel.org/r/20240823015542.3006262-1-yujiaoliang@vivo.com
Reviewed-by: Jan Kara <jack@suse.cz>
Signed-off-by: Christian Brauner <brauner@kernel.org>
fs/mnt_idmapping.c

index 3c60f1eaca615a24588a3a7e1645dbaf71234774..79491663dbc0cf798f31c44effdceafc077924fd 100644 (file)
@@ -228,15 +228,15 @@ static int copy_mnt_idmap(struct uid_gid_map *map_from,
                return 0;
        }
 
-       forward = kmemdup(map_from->forward,
-                         nr_extents * sizeof(struct uid_gid_extent),
-                         GFP_KERNEL_ACCOUNT);
+       forward = kmemdup_array(map_from->forward, nr_extents,
+                               sizeof(struct uid_gid_extent),
+                               GFP_KERNEL_ACCOUNT);
        if (!forward)
                return -ENOMEM;
 
-       reverse = kmemdup(map_from->reverse,
-                         nr_extents * sizeof(struct uid_gid_extent),
-                         GFP_KERNEL_ACCOUNT);
+       reverse = kmemdup_array(map_from->reverse, nr_extents,
+                               sizeof(struct uid_gid_extent),
+                               GFP_KERNEL_ACCOUNT);
        if (!reverse) {
                kfree(forward);
                return -ENOMEM;