diff options
| author | Jan Blunck <jblunck@suse.de> | 2008-02-14 19:34:32 -0800 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2008-02-14 21:13:33 -0800 | 
| commit | 4ac9137858e08a19f29feac4e1f4df7c268b0ba5 (patch) | |
| tree | f5b5d84fd12fcc2b0ba0e7ce1a79ff381ad8f5dd /net/unix/af_unix.c | |
| parent | c5e725f33b733a77de622e91b6ba5645fcf070be (diff) | |
Embed a struct path into struct nameidata instead of nd->{dentry,mnt}
This is the central patch of a cleanup series. In most cases there is no good
reason why someone would want to use a dentry for itself. This series reflects
that fact and embeds a struct path into nameidata.
Together with the other patches of this series
- it enforced the correct order of getting/releasing the reference count on
  <dentry,vfsmount> pairs
- it prepares the VFS for stacking support since it is essential to have a
  struct path in every place where the stack can be traversed
- it reduces the overall code size:
without patch series:
   text    data     bss     dec     hex filename
5321639  858418  715768 6895825  6938d1 vmlinux
with patch series:
   text    data     bss     dec     hex filename
5320026  858418  715768 6894212  693284 vmlinux
This patch:
Switch from nd->{dentry,mnt} to nd->path.{dentry,mnt} everywhere.
[akpm@linux-foundation.org: coding-style fixes]
[akpm@linux-foundation.org: fix cifs]
[akpm@linux-foundation.org: fix smack]
Signed-off-by: Jan Blunck <jblunck@suse.de>
Signed-off-by: Andreas Gruenbacher <agruen@suse.de>
Acked-by: Christoph Hellwig <hch@lst.de>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: Casey Schaufler <casey@schaufler-ca.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'net/unix/af_unix.c')
| -rw-r--r-- | net/unix/af_unix.c | 20 | 
1 files changed, 10 insertions, 10 deletions
diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c index eea75888805..7c3323e8827 100644 --- a/net/unix/af_unix.c +++ b/net/unix/af_unix.c @@ -718,14 +718,14 @@ static struct sock *unix_find_other(struct net *net,  			goto put_fail;  		err = -ECONNREFUSED; -		if (!S_ISSOCK(nd.dentry->d_inode->i_mode)) +		if (!S_ISSOCK(nd.path.dentry->d_inode->i_mode))  			goto put_fail; -		u=unix_find_socket_byinode(net, nd.dentry->d_inode); +		u = unix_find_socket_byinode(net, nd.path.dentry->d_inode);  		if (!u)  			goto put_fail;  		if (u->sk_type == type) -			touch_atime(nd.mnt, nd.dentry); +			touch_atime(nd.path.mnt, nd.path.dentry);  		path_release(&nd); @@ -819,12 +819,12 @@ static int unix_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len)  		 */  		mode = S_IFSOCK |  		       (SOCK_INODE(sock)->i_mode & ~current->fs->umask); -		err = vfs_mknod(nd.dentry->d_inode, dentry, mode, 0); +		err = vfs_mknod(nd.path.dentry->d_inode, dentry, mode, 0);  		if (err)  			goto out_mknod_dput; -		mutex_unlock(&nd.dentry->d_inode->i_mutex); -		dput(nd.dentry); -		nd.dentry = dentry; +		mutex_unlock(&nd.path.dentry->d_inode->i_mutex); +		dput(nd.path.dentry); +		nd.path.dentry = dentry;  		addr->hash = UNIX_HASH_SIZE;  	} @@ -842,8 +842,8 @@ static int unix_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len)  		list = &unix_socket_table[addr->hash];  	} else {  		list = &unix_socket_table[dentry->d_inode->i_ino & (UNIX_HASH_SIZE-1)]; -		u->dentry = nd.dentry; -		u->mnt    = nd.mnt; +		u->dentry = nd.path.dentry; +		u->mnt    = nd.path.mnt;  	}  	err = 0; @@ -861,7 +861,7 @@ out:  out_mknod_dput:  	dput(dentry);  out_mknod_unlock: -	mutex_unlock(&nd.dentry->d_inode->i_mutex); +	mutex_unlock(&nd.path.dentry->d_inode->i_mutex);  	path_release(&nd);  out_mknod_parent:  	if (err==-EEXIST)  | 
