Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 42889
b: refs/heads/master
c: 304e61e
h: refs/heads/master
i:
  42887: b192171
v: v3
  • Loading branch information
Eric Dumazet authored and Linus Torvalds committed Dec 7, 2006
1 parent 1bd80e8 commit ca18206
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 4 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: b3423415fbc2e5461605826317da1c8dbbf21f97
refs/heads/master: 304e61e6fbadec586dfe002b535f169a04248e49
19 changes: 16 additions & 3 deletions trunk/net/socket.c
Original file line number Diff line number Diff line change
Expand Up @@ -305,7 +305,14 @@ static struct file_system_type sock_fs_type = {

static int sockfs_delete_dentry(struct dentry *dentry)
{
return 1;
/*
* At creation time, we pretended this dentry was hashed
* (by clearing DCACHE_UNHASHED bit in d_flags)
* At delete time, we restore the truth : not hashed.
* (so that dput() can proceed correctly)
*/
dentry->d_flags |= DCACHE_UNHASHED;
return 0;
}
static struct dentry_operations sockfs_dentry_operations = {
.d_delete = sockfs_delete_dentry,
Expand Down Expand Up @@ -353,14 +360,20 @@ static int sock_attach_fd(struct socket *sock, struct file *file)

this.len = sprintf(name, "[%lu]", SOCK_INODE(sock)->i_ino);
this.name = name;
this.hash = SOCK_INODE(sock)->i_ino;
this.hash = 0;

file->f_dentry = d_alloc(sock_mnt->mnt_sb->s_root, &this);
if (unlikely(!file->f_dentry))
return -ENOMEM;

file->f_dentry->d_op = &sockfs_dentry_operations;
d_add(file->f_dentry, SOCK_INODE(sock));
/*
* We dont want to push this dentry into global dentry hash table.
* We pretend dentry is already hashed, by unsetting DCACHE_UNHASHED
* This permits a working /proc/$pid/fd/XXX on sockets
*/
file->f_dentry->d_flags &= ~DCACHE_UNHASHED;
d_instantiate(file->f_dentry, SOCK_INODE(sock));
file->f_vfsmnt = mntget(sock_mnt);
file->f_mapping = file->f_dentry->d_inode->i_mapping;

Expand Down

0 comments on commit ca18206

Please sign in to comment.