Skip to content

Commit

Permalink
ncpfs: switch to sockfd_lookup()/sockfd_put()
Browse files Browse the repository at this point in the history
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
  • Loading branch information
Al Viro committed Apr 2, 2014
1 parent e251157 commit 44ba840
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 40 deletions.
50 changes: 12 additions & 38 deletions fs/ncpfs/inode.c
Original file line number Diff line number Diff line change
Expand Up @@ -468,9 +468,7 @@ static int ncp_fill_super(struct super_block *sb, void *raw_data, int silent)
{
struct ncp_mount_data_kernel data;
struct ncp_server *server;
struct file *ncp_filp;
struct inode *root_inode;
struct inode *sock_inode;
struct socket *sock;
int error;
int default_bufsize;
Expand Down Expand Up @@ -539,18 +537,10 @@ static int ncp_fill_super(struct super_block *sb, void *raw_data, int silent)
if (!uid_valid(data.mounted_uid) || !uid_valid(data.uid) ||
!gid_valid(data.gid))
goto out;
error = -EBADF;
ncp_filp = fget(data.ncp_fd);
if (!ncp_filp)
goto out;
error = -ENOTSOCK;
sock_inode = file_inode(ncp_filp);
if (!S_ISSOCK(sock_inode->i_mode))
goto out_fput;
sock = SOCKET_I(sock_inode);
sock = sockfd_lookup(data.ncp_fd, &error);
if (!sock)
goto out_fput;
goto out;

if (sock->type == SOCK_STREAM)
default_bufsize = 0xF000;
else
Expand All @@ -572,27 +562,16 @@ static int ncp_fill_super(struct super_block *sb, void *raw_data, int silent)
if (error)
goto out_fput;

server->ncp_filp = ncp_filp;
server->ncp_sock = sock;

if (data.info_fd != -1) {
struct socket *info_sock;

error = -EBADF;
server->info_filp = fget(data.info_fd);
if (!server->info_filp)
goto out_bdi;
error = -ENOTSOCK;
sock_inode = file_inode(server->info_filp);
if (!S_ISSOCK(sock_inode->i_mode))
goto out_fput2;
info_sock = SOCKET_I(sock_inode);
struct socket *info_sock = sockfd_lookup(data.info_fd, &error);
if (!info_sock)
goto out_fput2;
goto out_bdi;
server->info_sock = info_sock;
error = -EBADFD;
if (info_sock->type != SOCK_STREAM)
goto out_fput2;
server->info_sock = info_sock;
}

/* server->lock = 0; */
Expand Down Expand Up @@ -764,17 +743,12 @@ static int ncp_fill_super(struct super_block *sb, void *raw_data, int silent)
mutex_destroy(&server->root_setup_lock);
mutex_destroy(&server->mutex);
out_fput2:
if (server->info_filp)
fput(server->info_filp);
if (server->info_sock)
sockfd_put(server->info_sock);
out_bdi:
bdi_destroy(&server->bdi);
out_fput:
/* 23/12/1998 Marcin Dalecki <dalecki@cs.net.pl>:
*
* The previously used put_filp(ncp_filp); was bogus, since
* it doesn't perform proper unlocking.
*/
fput(ncp_filp);
sockfd_put(sock);
out:
put_pid(data.wdog_pid);
sb->s_fs_info = NULL;
Expand Down Expand Up @@ -807,9 +781,9 @@ static void ncp_put_super(struct super_block *sb)
mutex_destroy(&server->root_setup_lock);
mutex_destroy(&server->mutex);

if (server->info_filp)
fput(server->info_filp);
fput(server->ncp_filp);
if (server->info_sock)
sockfd_put(server->info_sock);
sockfd_put(server->ncp_sock);
kill_pid(server->m.wdog_pid, SIGTERM, 1);
put_pid(server->m.wdog_pid);

Expand Down
2 changes: 0 additions & 2 deletions fs/ncpfs/ncp_fs_sb.h
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,7 @@ struct ncp_server {

__u8 name_space[NCP_NUMBER_OF_VOLUMES + 2];

struct file *ncp_filp; /* File pointer to ncp socket */
struct socket *ncp_sock;/* ncp socket */
struct file *info_filp;
struct socket *info_sock;

u8 sequence;
Expand Down

0 comments on commit 44ba840

Please sign in to comment.