diff options
author | Benjamin LaHaise <bcrl@linux.intel.com> | 2005-08-10 17:16:04 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2005-08-29 18:56:38 -0400 |
commit | 07dc3f0718d2c88c3094a0aadeeb4744effc5439 (patch) | |
tree | d0bb49ac931db8ad0d5887da75193b42bc00e95f /net/socket.c | |
parent | cef07fd6029c20f95571d09cefce45ee3276a920 (diff) |
[NET]: Make use of ->private_data in sockfd_lookup
Please consider the patch below which makes use of file->private_data to
store the pointer to the socket, which avoids touching several unused
cachelines in the dentry and inode in sockfd_lookup.
Signed-off-by: Benjamin LaHaise <bcrl@linux.intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/socket.c')
-rw-r--r-- | net/socket.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/net/socket.c b/net/socket.c index 6f2a17881972..5f76ab8a1594 100644 --- a/net/socket.c +++ b/net/socket.c | |||
@@ -404,6 +404,7 @@ int sock_map_fd(struct socket *sock) | |||
404 | file->f_mode = FMODE_READ | FMODE_WRITE; | 404 | file->f_mode = FMODE_READ | FMODE_WRITE; |
405 | file->f_flags = O_RDWR; | 405 | file->f_flags = O_RDWR; |
406 | file->f_pos = 0; | 406 | file->f_pos = 0; |
407 | file->private_data = sock; | ||
407 | fd_install(fd, file); | 408 | fd_install(fd, file); |
408 | } | 409 | } |
409 | 410 | ||
@@ -436,6 +437,9 @@ struct socket *sockfd_lookup(int fd, int *err) | |||
436 | return NULL; | 437 | return NULL; |
437 | } | 438 | } |
438 | 439 | ||
440 | if (file->f_op == &socket_file_ops) | ||
441 | return file->private_data; /* set in sock_map_fd */ | ||
442 | |||
439 | inode = file->f_dentry->d_inode; | 443 | inode = file->f_dentry->d_inode; |
440 | if (!S_ISSOCK(inode->i_mode)) { | 444 | if (!S_ISSOCK(inode->i_mode)) { |
441 | *err = -ENOTSOCK; | 445 | *err = -ENOTSOCK; |