diff options
Diffstat (limited to 'net/socket.c')
-rw-r--r-- | net/socket.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/net/socket.c b/net/socket.c index 3cd96fe8191d..540013ea8620 100644 --- a/net/socket.c +++ b/net/socket.c | |||
@@ -364,26 +364,26 @@ static int sock_alloc_fd(struct file **filep) | |||
364 | 364 | ||
365 | static int sock_attach_fd(struct socket *sock, struct file *file) | 365 | static int sock_attach_fd(struct socket *sock, struct file *file) |
366 | { | 366 | { |
367 | struct dentry *dentry; | ||
367 | struct qstr name = { .name = "" }; | 368 | struct qstr name = { .name = "" }; |
368 | 369 | ||
369 | file->f_path.dentry = d_alloc(sock_mnt->mnt_sb->s_root, &name); | 370 | dentry = d_alloc(sock_mnt->mnt_sb->s_root, &name); |
370 | if (unlikely(!file->f_path.dentry)) | 371 | if (unlikely(!dentry)) |
371 | return -ENOMEM; | 372 | return -ENOMEM; |
372 | 373 | ||
373 | file->f_path.dentry->d_op = &sockfs_dentry_operations; | 374 | dentry->d_op = &sockfs_dentry_operations; |
374 | /* | 375 | /* |
375 | * We dont want to push this dentry into global dentry hash table. | 376 | * We dont want to push this dentry into global dentry hash table. |
376 | * We pretend dentry is already hashed, by unsetting DCACHE_UNHASHED | 377 | * We pretend dentry is already hashed, by unsetting DCACHE_UNHASHED |
377 | * This permits a working /proc/$pid/fd/XXX on sockets | 378 | * This permits a working /proc/$pid/fd/XXX on sockets |
378 | */ | 379 | */ |
379 | file->f_path.dentry->d_flags &= ~DCACHE_UNHASHED; | 380 | dentry->d_flags &= ~DCACHE_UNHASHED; |
380 | d_instantiate(file->f_path.dentry, SOCK_INODE(sock)); | 381 | d_instantiate(dentry, SOCK_INODE(sock)); |
381 | file->f_path.mnt = mntget(sock_mnt); | ||
382 | file->f_mapping = file->f_path.dentry->d_inode->i_mapping; | ||
383 | 382 | ||
384 | sock->file = file; | 383 | sock->file = file; |
385 | file->f_op = SOCK_INODE(sock)->i_fop = &socket_file_ops; | 384 | init_file(file, sock_mnt, dentry, FMODE_READ | FMODE_WRITE, |
386 | file->f_mode = FMODE_READ | FMODE_WRITE; | 385 | &socket_file_ops); |
386 | SOCK_INODE(sock)->i_fop = &socket_file_ops; | ||
387 | file->f_flags = O_RDWR; | 387 | file->f_flags = O_RDWR; |
388 | file->f_pos = 0; | 388 | file->f_pos = 0; |
389 | file->private_data = sock; | 389 | file->private_data = sock; |