diff options
| author | Al Viro <viro@zeniv.linux.org.uk> | 2012-07-19 18:25:00 -0400 |
|---|---|---|
| committer | Al Viro <viro@zeniv.linux.org.uk> | 2012-07-29 13:24:15 -0400 |
| commit | a8104a9fcdeb82e22d7acd55fca20746581067d3 (patch) | |
| tree | 3036dae685f9b12a878dd02e439f0050114d7745 /net/unix | |
| parent | 8e4bfca1d1f0de62301dd223675717e7a5f63a27 (diff) | |
pull mnt_want_write()/mnt_drop_write() into kern_path_create()/done_path_create() resp.
One side effect - attempt to create a cross-device link on a read-only fs fails
with EROFS instead of EXDEV now. Makes more sense, POSIX allows, etc.
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'net/unix')
| -rw-r--r-- | net/unix/af_unix.c | 4 |
1 files changed, 0 insertions, 4 deletions
diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c index e8239540683a..88ab72820b9f 100644 --- a/net/unix/af_unix.c +++ b/net/unix/af_unix.c | |||
| @@ -876,15 +876,11 @@ static int unix_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len) | |||
| 876 | */ | 876 | */ |
| 877 | mode = S_IFSOCK | | 877 | mode = S_IFSOCK | |
| 878 | (SOCK_INODE(sock)->i_mode & ~current_umask()); | 878 | (SOCK_INODE(sock)->i_mode & ~current_umask()); |
| 879 | err = mnt_want_write(path.mnt); | ||
| 880 | if (err) | ||
| 881 | goto out_mknod_dput; | ||
| 882 | err = security_path_mknod(&path, dentry, mode, 0); | 879 | err = security_path_mknod(&path, dentry, mode, 0); |
| 883 | if (err) | 880 | if (err) |
| 884 | goto out_mknod_drop_write; | 881 | goto out_mknod_drop_write; |
| 885 | err = vfs_mknod(path.dentry->d_inode, dentry, mode, 0); | 882 | err = vfs_mknod(path.dentry->d_inode, dentry, mode, 0); |
| 886 | out_mknod_drop_write: | 883 | out_mknod_drop_write: |
| 887 | mnt_drop_write(path.mnt); | ||
| 888 | if (err) | 884 | if (err) |
| 889 | goto out_mknod_dput; | 885 | goto out_mknod_dput; |
| 890 | mntget(path.mnt); | 886 | mntget(path.mnt); |
