2022-08-23 16:05:22

by Shigeru Yoshida

[permalink] [raw]
Subject: [PATCH] fs/ntfs3: Fix memory leak on ntfs_fill_super() error path

syzbot reported kmemleak as below:

BUG: memory leak
unreferenced object 0xffff8880122f1540 (size 32):
comm "a.out", pid 6664, jiffies 4294939771 (age 25.500s)
hex dump (first 32 bytes):
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 ed ff ed ff 00 00 00 00 ................
backtrace:
[<ffffffff81b16052>] ntfs_init_fs_context+0x22/0x1c0
[<ffffffff8164aaa7>] alloc_fs_context+0x217/0x430
[<ffffffff81626dd4>] path_mount+0x704/0x1080
[<ffffffff81627e7c>] __x64_sys_mount+0x18c/0x1d0
[<ffffffff84593e14>] do_syscall_64+0x34/0xb0
[<ffffffff84600087>] entry_SYSCALL_64_after_hwframe+0x63/0xcd

This patch fixes this issue by freeing mount options on error path of
ntfs_fill_super().

Reported-by: [email protected]
Signed-off-by: Shigeru Yoshida <[email protected]>
---
fs/ntfs3/super.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/fs/ntfs3/super.c b/fs/ntfs3/super.c
index 47012c9bf505..c0e45f170701 100644
--- a/fs/ntfs3/super.c
+++ b/fs/ntfs3/super.c
@@ -1281,6 +1281,7 @@ static int ntfs_fill_super(struct super_block *sb, struct fs_context *fc)
* Free resources here.
* ntfs_fs_free will be called with fc->s_fs_info = NULL
*/
+ put_mount_options(sbi->options);
put_ntfs(sbi);
sb->s_fs_info = NULL;

--
2.37.2


2022-09-07 16:16:55

by Shigeru Yoshida

[permalink] [raw]
Subject: Re: [PATCH] fs/ntfs3: Fix memory leak on ntfs_fill_super() error path

ping?

On Tue, 23 Aug 2022 19:32:05 +0900, Shigeru Yoshida wrote:
> syzbot reported kmemleak as below:
>
> BUG: memory leak
> unreferenced object 0xffff8880122f1540 (size 32):
> comm "a.out", pid 6664, jiffies 4294939771 (age 25.500s)
> hex dump (first 32 bytes):
> 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
> 00 00 00 00 00 00 00 00 ed ff ed ff 00 00 00 00 ................
> backtrace:
> [<ffffffff81b16052>] ntfs_init_fs_context+0x22/0x1c0
> [<ffffffff8164aaa7>] alloc_fs_context+0x217/0x430
> [<ffffffff81626dd4>] path_mount+0x704/0x1080
> [<ffffffff81627e7c>] __x64_sys_mount+0x18c/0x1d0
> [<ffffffff84593e14>] do_syscall_64+0x34/0xb0
> [<ffffffff84600087>] entry_SYSCALL_64_after_hwframe+0x63/0xcd
>
> This patch fixes this issue by freeing mount options on error path of
> ntfs_fill_super().
>
> Reported-by: [email protected]
> Signed-off-by: Shigeru Yoshida <[email protected]>
> ---
> fs/ntfs3/super.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/fs/ntfs3/super.c b/fs/ntfs3/super.c
> index 47012c9bf505..c0e45f170701 100644
> --- a/fs/ntfs3/super.c
> +++ b/fs/ntfs3/super.c
> @@ -1281,6 +1281,7 @@ static int ntfs_fill_super(struct super_block *sb, struct fs_context *fc)
> * Free resources here.
> * ntfs_fs_free will be called with fc->s_fs_info = NULL
> */
> + put_mount_options(sbi->options);
> put_ntfs(sbi);
> sb->s_fs_info = NULL;
>
> --
> 2.37.2
>

2022-09-30 16:38:54

by Konstantin Komarov

[permalink] [raw]
Subject: Re: [PATCH] fs/ntfs3: Fix memory leak on ntfs_fill_super() error path



On 8/23/22 13:32, Shigeru Yoshida wrote:
> syzbot reported kmemleak as below:
>
> BUG: memory leak
> unreferenced object 0xffff8880122f1540 (size 32):
> comm "a.out", pid 6664, jiffies 4294939771 (age 25.500s)
> hex dump (first 32 bytes):
> 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
> 00 00 00 00 00 00 00 00 ed ff ed ff 00 00 00 00 ................
> backtrace:
> [<ffffffff81b16052>] ntfs_init_fs_context+0x22/0x1c0
> [<ffffffff8164aaa7>] alloc_fs_context+0x217/0x430
> [<ffffffff81626dd4>] path_mount+0x704/0x1080
> [<ffffffff81627e7c>] __x64_sys_mount+0x18c/0x1d0
> [<ffffffff84593e14>] do_syscall_64+0x34/0xb0
> [<ffffffff84600087>] entry_SYSCALL_64_after_hwframe+0x63/0xcd
>
> This patch fixes this issue by freeing mount options on error path of
> ntfs_fill_super().
>
> Reported-by: [email protected]
> Signed-off-by: Shigeru Yoshida <[email protected]>
> ---
> fs/ntfs3/super.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/fs/ntfs3/super.c b/fs/ntfs3/super.c
> index 47012c9bf505..c0e45f170701 100644
> --- a/fs/ntfs3/super.c
> +++ b/fs/ntfs3/super.c
> @@ -1281,6 +1281,7 @@ static int ntfs_fill_super(struct super_block *sb, struct fs_context *fc)
> * Free resources here.
> * ntfs_fs_free will be called with fc->s_fs_info = NULL
> */
> + put_mount_options(sbi->options);
> put_ntfs(sbi);
> sb->s_fs_info = NULL;
>

Thanks for patch, applied!