Skip to content

Commit

Permalink
fs/ncpfs: fix error paths and goto statements in ncp_fill_super()
Browse files Browse the repository at this point in the history
The label 'out_bdi' should be followed by bdi_destroy() instead of
fput() which should be after the 'out_fput' label.

If bdi_setup_and_register() fails then jump to the 'out_fput' label
instead of the 'out_bdi' one.

If fget(data.info_fd) fails then jump to the previously fixed 'out_bdi'
label to call bdi_destroy() otherwise the bdi object will not be
destroyed.

Compile tested only.

Signed-off-by: Djalal Harouni <[email protected]>
Signed-off-by: Al Viro <[email protected]>
  • Loading branch information
tixxdz authored and Al Viro committed Dec 14, 2011
1 parent 7c6455e commit 759c361
Showing 1 changed file with 4 additions and 4 deletions.
8 changes: 4 additions & 4 deletions fs/ncpfs/inode.c
Original file line number Diff line number Diff line change
Expand Up @@ -548,7 +548,7 @@ static int ncp_fill_super(struct super_block *sb, void *raw_data, int silent)

error = bdi_setup_and_register(&server->bdi, "ncpfs", BDI_CAP_MAP_COPY);
if (error)
goto out_bdi;
goto out_fput;

server->ncp_filp = ncp_filp;
server->ncp_sock = sock;
Expand All @@ -559,7 +559,7 @@ static int ncp_fill_super(struct super_block *sb, void *raw_data, int silent)
error = -EBADF;
server->info_filp = fget(data.info_fd);
if (!server->info_filp)
goto out_fput;
goto out_bdi;
error = -ENOTSOCK;
sock_inode = server->info_filp->f_path.dentry->d_inode;
if (!S_ISSOCK(sock_inode->i_mode))
Expand Down Expand Up @@ -746,9 +746,9 @@ static int ncp_fill_super(struct super_block *sb, void *raw_data, int silent)
out_fput2:
if (server->info_filp)
fput(server->info_filp);
out_fput:
bdi_destroy(&server->bdi);
out_bdi:
bdi_destroy(&server->bdi);
out_fput:
/* 23/12/1998 Marcin Dalecki <[email protected]>:
*
* The previously used put_filp(ncp_filp); was bogus, since
Expand Down

0 comments on commit 759c361

Please sign in to comment.