Skip to content

Commit e8c73eb

Browse files
ea1davissmfrench
authored andcommitted
cifs: client: fix memory leak in smb3_fs_context_parse_param
The user calls fsconfig twice, but when the program exits, free() only frees ctx->source for the second fsconfig, not the first. Regarding fc->source, there is no code in the fs context related to its memory reclamation. To fix this memory leak, release the source memory corresponding to ctx or fc before each parsing. syzbot reported: BUG: memory leak unreferenced object 0xffff888128afa360 (size 96): backtrace (crc 79c9c7ba): kstrdup+0x3c/0x80 mm/util.c:84 smb3_fs_context_parse_param+0x229b/0x36c0 fs/smb/client/fs_context.c:1444 BUG: memory leak unreferenced object 0xffff888112c7d900 (size 96): backtrace (crc 79c9c7ba): smb3_fs_context_fullpath+0x70/0x1b0 fs/smb/client/fs_context.c:629 smb3_fs_context_parse_param+0x2266/0x36c0 fs/smb/client/fs_context.c:1438 Reported-by: syzbot+72afd4c236e6bc3f4bac@syzkaller.appspotmail.com Closes: https://syzkaller.appspot.com/bug?extid=72afd4c236e6bc3f4bac Cc: stable@vger.kernel.org Reviewed-by: Paulo Alcantara (Red Hat) <pc@manguebit.org> Signed-off-by: Edward Adam Davis <eadavis@qq.com> Signed-off-by: Steve French <stfrench@microsoft.com>
1 parent 7928019 commit e8c73eb

1 file changed

Lines changed: 2 additions & 0 deletions

File tree

fs/smb/client/fs_context.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1435,12 +1435,14 @@ static int smb3_fs_context_parse_param(struct fs_context *fc,
14351435
cifs_errorf(fc, "Unknown error parsing devname\n");
14361436
goto cifs_parse_mount_err;
14371437
}
1438+
kfree(ctx->source);
14381439
ctx->source = smb3_fs_context_fullpath(ctx, '/');
14391440
if (IS_ERR(ctx->source)) {
14401441
ctx->source = NULL;
14411442
cifs_errorf(fc, "OOM when copying UNC string\n");
14421443
goto cifs_parse_mount_err;
14431444
}
1445+
kfree(fc->source);
14441446
fc->source = kstrdup(ctx->source, GFP_KERNEL);
14451447
if (fc->source == NULL) {
14461448
cifs_errorf(fc, "OOM when copying UNC string\n");

0 commit comments

Comments
 (0)