]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
fs: Fix uninitialized 'offp' in statmount_string()
authorZhen Ni <zhen.ni@easystack.cn>
Mon, 13 Oct 2025 11:41:51 +0000 (19:41 +0800)
committerChristian Brauner <brauner@kernel.org>
Tue, 21 Oct 2025 12:21:46 +0000 (14:21 +0200)
In statmount_string(), most flags assign an output offset pointer (offp)
which is later updated with the string offset. However, the
STATMOUNT_MNT_UIDMAP and STATMOUNT_MNT_GIDMAP cases directly set the
struct fields instead of using offp. This leaves offp uninitialized,
leading to a possible uninitialized dereference when *offp is updated.

Fix it by assigning offp for UIDMAP and GIDMAP as well, keeping the code
path consistent.

Fixes: 37c4a9590e1e ("statmount: allow to retrieve idmappings")
Fixes: e52e97f09fb6 ("statmount: let unset strings be empty")
Cc: stable@vger.kernel.org
Signed-off-by: Zhen Ni <zhen.ni@easystack.cn>
Link: https://patch.msgid.link/20251013114151.664341-1-zhen.ni@easystack.cn
Reviewed-by: Jan Kara <jack@suse.cz>
Signed-off-by: Christian Brauner <brauner@kernel.org>
fs/namespace.c

index d82910f33dc483f2753058bdd1a546bce9caf77b..5b5ab2ae238b9888626b11a71452c8c46cf4b829 100644 (file)
@@ -5454,11 +5454,11 @@ static int statmount_string(struct kstatmount *s, u64 flag)
                ret = statmount_sb_source(s, seq);
                break;
        case STATMOUNT_MNT_UIDMAP:
-               sm->mnt_uidmap = start;
+               offp = &sm->mnt_uidmap;
                ret = statmount_mnt_uidmap(s, seq);
                break;
        case STATMOUNT_MNT_GIDMAP:
-               sm->mnt_gidmap = start;
+               offp = &sm->mnt_gidmap;
                ret = statmount_mnt_gidmap(s, seq);
                break;
        default: