Commit 23bb80d2 authored by Eric Dumazet's avatar Eric Dumazet Committed by David S. Miller

[NET]: cleanup sock_from_file()

I believe dead code from sock_from_file() can be cleaned up.

All sockets are now built using sock_attach_fd(), that puts the 'sock' pointer 
into file->private_data and &socket_file_ops into file->f_op

I could not find a place where file->private_data could be set to NULL, 
keeping opened the file.

So to get 'sock' from a 'file' pointer, either :

- This is a socket file (f_op == &socket_file_ops), and we can directly get 
'sock' from private_data.
- This is not a socket, we return -ENOTSOCK and dont even try to find a socket 
via dentry/inode :)
Signed-off-by: default avatarEric Dumazet <dada1@cosmosbay.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent dbca9b27
...@@ -407,24 +407,11 @@ int sock_map_fd(struct socket *sock) ...@@ -407,24 +407,11 @@ int sock_map_fd(struct socket *sock)
static struct socket *sock_from_file(struct file *file, int *err) static struct socket *sock_from_file(struct file *file, int *err)
{ {
struct inode *inode;
struct socket *sock;
if (file->f_op == &socket_file_ops) if (file->f_op == &socket_file_ops)
return file->private_data; /* set in sock_map_fd */ return file->private_data; /* set in sock_map_fd */
inode = file->f_path.dentry->d_inode;
if (!S_ISSOCK(inode->i_mode)) {
*err = -ENOTSOCK; *err = -ENOTSOCK;
return NULL; return NULL;
}
sock = SOCKET_I(inode);
if (sock->file != file) {
printk(KERN_ERR "socki_lookup: socket file changed!\n");
sock->file = file;
}
return sock;
} }
/** /**
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment