Commit 975feeb3 authored by Yuezhang Mo's avatar Yuezhang Mo Committed by Yongjian Sun
Browse files

exfat: fix memory leak in exfat_load_bitmap()

mainline inclusion
from mainline-v6.12-rc1
commit d2b537b3e533f28e0d97293fe9293161fe8cd137
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/IAYRBG
CVE: CVE-2024-50013

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d2b537b3e533f28e0d97293fe9293161fe8cd137



--------------------------------

If the first directory entry in the root directory is not a bitmap
directory entry, 'bh' will not be released and reassigned, which
will cause a memory leak.

Fixes: 1e49a94c ("exfat: add bitmap operations")
Cc: stable@vger.kernel.org
Signed-off-by: default avatarYuezhang Mo <Yuezhang.Mo@sony.com>
Reviewed-by: default avatarAoyama Wataru <wataru.aoyama@sony.com>
Signed-off-by: default avatarNamjae Jeon <linkinjeon@kernel.org>
Signed-off-by: default avatarYongjian Sun <sunyongjian1@huawei.com>
parent f57c7b29
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -110,11 +110,8 @@ int exfat_load_bitmap(struct super_block *sb)
				return -EIO;

			type = exfat_get_entry_type(ep);
			if (type == TYPE_UNUSED)
				break;
			if (type != TYPE_BITMAP)
				continue;
			if (ep->dentry.bitmap.flags == 0x0) {
			if (type == TYPE_BITMAP &&
			    ep->dentry.bitmap.flags == 0x0) {
				int err;

				err = exfat_allocate_bitmap(sb, ep);
@@ -122,6 +119,9 @@ int exfat_load_bitmap(struct super_block *sb)
				return err;
			}
			brelse(bh);

			if (type == TYPE_UNUSED)
				return -EINVAL;
		}

		if (exfat_get_next_cluster(sb, &clu.dir))