This is a note to let you know that I've just added the patch titled v9fs_dir_readdir: fix double-free on p9stat_read error to the 4.9-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: v9fs_dir_readdir-fix-double-free-on-p9stat_read-error.patch and it can be found in the queue-4.9 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <stable@xxxxxxxxxxxxxxx> know about it. >From 81c99089bce693b94b775b6eb888115d2d540086 Mon Sep 17 00:00:00 2001 From: Dominique Martinet <dominique.martinet@xxxxxx> Date: Mon, 27 Aug 2018 15:12:05 +0900 Subject: v9fs_dir_readdir: fix double-free on p9stat_read error From: Dominique Martinet <dominique.martinet@xxxxxx> commit 81c99089bce693b94b775b6eb888115d2d540086 upstream. p9stat_read will call p9stat_free on error, we should only free the struct content on success. There also is no need to "p9stat_init" st as the read function will zero the whole struct for us anyway, so clean up the code a bit while we are here. Link: http://lkml.kernel.org/r/1535410108-20650-1-git-send-email-asmadeus@xxxxxxxxxxxxx Signed-off-by: Dominique Martinet <dominique.martinet@xxxxxx> Reported-by: syzbot+d4252148d198410b864f@xxxxxxxxxxxxxxxxxxxxxxxxx Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- fs/9p/vfs_dir.c | 11 ----------- 1 file changed, 11 deletions(-) --- a/fs/9p/vfs_dir.c +++ b/fs/9p/vfs_dir.c @@ -76,15 +76,6 @@ static inline int dt_type(struct p9_wsta return rettype; } -static void p9stat_init(struct p9_wstat *stbuf) -{ - stbuf->name = NULL; - stbuf->uid = NULL; - stbuf->gid = NULL; - stbuf->muid = NULL; - stbuf->extension = NULL; -} - /** * v9fs_alloc_rdir_buf - Allocate buffer used for read and readdir * @filp: opened file structure @@ -145,12 +136,10 @@ static int v9fs_dir_readdir(struct file rdir->tail = n; } while (rdir->head < rdir->tail) { - p9stat_init(&st); err = p9stat_read(fid->clnt, rdir->buf + rdir->head, rdir->tail - rdir->head, &st); if (err) { p9_debug(P9_DEBUG_VFS, "returned %d\n", err); - p9stat_free(&st); return -EIO; } reclen = st.size+2; Patches currently in stable-queue which might be from dominique.martinet@xxxxxx are queue-4.9/v9fs_dir_readdir-fix-double-free-on-p9stat_read-error.patch