diff options
author | Eric Dumazet <dada1@cosmosbay.com> | 2007-02-08 23:59:57 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2007-02-08 23:59:57 +0100 |
commit | 23bb80d2158cf4421fe239d788fd53cafb151050 (patch) | |
tree | 63b3033a3d6ee10baf7ecdda350b2cc0cd03baa9 /net | |
parent | [NET]: change layout of ehash table (diff) | |
download | linux-23bb80d2158cf4421fe239d788fd53cafb151050.tar.xz linux-23bb80d2158cf4421fe239d788fd53cafb151050.zip |
[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: Eric Dumazet <dada1@cosmosbay.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r-- | net/socket.c | 17 |
1 files changed, 2 insertions, 15 deletions
diff --git a/net/socket.c b/net/socket.c index 4e396312f8d5..fc74930f1443 100644 --- a/net/socket.c +++ b/net/socket.c @@ -407,24 +407,11 @@ int sock_map_fd(struct socket *sock) static struct socket *sock_from_file(struct file *file, int *err) { - struct inode *inode; - struct socket *sock; - if (file->f_op == &socket_file_ops) return file->private_data; /* set in sock_map_fd */ - inode = file->f_path.dentry->d_inode; - if (!S_ISSOCK(inode->i_mode)) { - *err = -ENOTSOCK; - return NULL; - } - - sock = SOCKET_I(inode); - if (sock->file != file) { - printk(KERN_ERR "socki_lookup: socket file changed!\n"); - sock->file = file; - } - return sock; + *err = -ENOTSOCK; + return NULL; } /** |