nilfs_open() can exit without closing nilfs->n_devfd and freeing nilfs->n_dev and nilfs->n_sb if it first initializes a nilfs object in the code path for NILFS_OPEN_RAW mode and then escapes through out_nilfs label. This fixes the leak issue. Signed-off-by: Ryusuke Konishi <konishi.ryusuke@xxxxxxxxxxxxx> --- lib/nilfs.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/lib/nilfs.c b/lib/nilfs.c index 65bf7d5..52ddee9 100644 --- a/lib/nilfs.c +++ b/lib/nilfs.c @@ -411,9 +411,9 @@ struct nilfs *nilfs_open(const char *dev, const char *dir, int flags) (NILFS_OPEN_RDONLY | NILFS_OPEN_WRONLY | NILFS_OPEN_RDWR)) { if (nilfs_find_fs(nilfs, dev, dir, MNTOPT_RW) < 0) { if (!(flags & NILFS_OPEN_RDONLY)) - goto out_nilfs; + goto out_fd; if (nilfs_find_fs(nilfs, dev, dir, MNTOPT_RO) < 0) - goto out_nilfs; + goto out_fd; } nilfs->n_iocfd = open(nilfs->n_ioc, O_RDONLY); if (nilfs->n_iocfd < 0) @@ -442,7 +442,6 @@ out_fd: if (nilfs->n_sb != NULL) free(nilfs->n_sb); -out_nilfs: free(nilfs); return NULL; } -- 1.8.3.1 -- To unsubscribe from this list: send the line "unsubscribe linux-nilfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html