mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-21 22:21:21 +00:00
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull vfs pile 1 from Al Viro: "This is _not_ all; in particular, Miklos' and Jan's stuff is not there yet." * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (64 commits) ext4: initialization of ext4_li_mtx needs to be done earlier debugfs-related mode_t whack-a-mole hfsplus: add an ioctl to bless files hfsplus: change finder_info to u32 hfsplus: initialise userflags qnx4: new helper - try_extent() qnx4: get rid of qnx4_bread/qnx4_getblk take removal of PF_FORKNOEXEC to flush_old_exec() trim includes in inode.c um: uml_dup_mmap() relies on ->mmap_sem being held, but activate_mm() doesn't hold it um: embed ->stub_pages[] into mmu_context gadgetfs: list_for_each_safe() misuse ocfs2: fix leaks on failure exits in module_init ecryptfs: make register_filesystem() the last potential failure exit ntfs: forgets to unregister sysctls on register_filesystem() failure logfs: missing cleanup on register_filesystem() failure jfs: mising cleanup on register_filesystem() failure make configfs_pin_fs() return root dentry on success configfs: configfs_create_dir() has parent dentry in dentry->d_parent configfs: sanitize configfs_create() ...
This commit is contained in:
commit
e2a0883e40
186 changed files with 5363 additions and 4144 deletions
|
@ -293,7 +293,7 @@ static struct sock *unix_find_socket_byinode(struct inode *i)
|
|||
spin_lock(&unix_table_lock);
|
||||
sk_for_each(s, node,
|
||||
&unix_socket_table[i->i_ino & (UNIX_HASH_SIZE - 1)]) {
|
||||
struct dentry *dentry = unix_sk(s)->dentry;
|
||||
struct dentry *dentry = unix_sk(s)->path.dentry;
|
||||
|
||||
if (dentry && dentry->d_inode == i) {
|
||||
sock_hold(s);
|
||||
|
@ -377,8 +377,7 @@ static void unix_sock_destructor(struct sock *sk)
|
|||
static int unix_release_sock(struct sock *sk, int embrion)
|
||||
{
|
||||
struct unix_sock *u = unix_sk(sk);
|
||||
struct dentry *dentry;
|
||||
struct vfsmount *mnt;
|
||||
struct path path;
|
||||
struct sock *skpair;
|
||||
struct sk_buff *skb;
|
||||
int state;
|
||||
|
@ -389,10 +388,9 @@ static int unix_release_sock(struct sock *sk, int embrion)
|
|||
unix_state_lock(sk);
|
||||
sock_orphan(sk);
|
||||
sk->sk_shutdown = SHUTDOWN_MASK;
|
||||
dentry = u->dentry;
|
||||
u->dentry = NULL;
|
||||
mnt = u->mnt;
|
||||
u->mnt = NULL;
|
||||
path = u->path;
|
||||
u->path.dentry = NULL;
|
||||
u->path.mnt = NULL;
|
||||
state = sk->sk_state;
|
||||
sk->sk_state = TCP_CLOSE;
|
||||
unix_state_unlock(sk);
|
||||
|
@ -425,10 +423,8 @@ static int unix_release_sock(struct sock *sk, int embrion)
|
|||
kfree_skb(skb);
|
||||
}
|
||||
|
||||
if (dentry) {
|
||||
dput(dentry);
|
||||
mntput(mnt);
|
||||
}
|
||||
if (path.dentry)
|
||||
path_put(&path);
|
||||
|
||||
sock_put(sk);
|
||||
|
||||
|
@ -641,8 +637,8 @@ static struct sock *unix_create1(struct net *net, struct socket *sock)
|
|||
sk->sk_max_ack_backlog = net->unx.sysctl_max_dgram_qlen;
|
||||
sk->sk_destruct = unix_sock_destructor;
|
||||
u = unix_sk(sk);
|
||||
u->dentry = NULL;
|
||||
u->mnt = NULL;
|
||||
u->path.dentry = NULL;
|
||||
u->path.mnt = NULL;
|
||||
spin_lock_init(&u->lock);
|
||||
atomic_long_set(&u->inflight, 0);
|
||||
INIT_LIST_HEAD(&u->link);
|
||||
|
@ -788,7 +784,7 @@ static struct sock *unix_find_other(struct net *net,
|
|||
goto put_fail;
|
||||
|
||||
if (u->sk_type == type)
|
||||
touch_atime(path.mnt, path.dentry);
|
||||
touch_atime(&path);
|
||||
|
||||
path_put(&path);
|
||||
|
||||
|
@ -802,9 +798,9 @@ static struct sock *unix_find_other(struct net *net,
|
|||
u = unix_find_socket_byname(net, sunname, len, type, hash);
|
||||
if (u) {
|
||||
struct dentry *dentry;
|
||||
dentry = unix_sk(u)->dentry;
|
||||
dentry = unix_sk(u)->path.dentry;
|
||||
if (dentry)
|
||||
touch_atime(unix_sk(u)->mnt, dentry);
|
||||
touch_atime(&unix_sk(u)->path);
|
||||
} else
|
||||
goto fail;
|
||||
}
|
||||
|
@ -910,8 +906,7 @@ out_mknod_drop_write:
|
|||
list = &unix_socket_table[addr->hash];
|
||||
} else {
|
||||
list = &unix_socket_table[dentry->d_inode->i_ino & (UNIX_HASH_SIZE-1)];
|
||||
u->dentry = path.dentry;
|
||||
u->mnt = path.mnt;
|
||||
u->path = path;
|
||||
}
|
||||
|
||||
err = 0;
|
||||
|
@ -1193,9 +1188,9 @@ restart:
|
|||
atomic_inc(&otheru->addr->refcnt);
|
||||
newu->addr = otheru->addr;
|
||||
}
|
||||
if (otheru->dentry) {
|
||||
newu->dentry = dget(otheru->dentry);
|
||||
newu->mnt = mntget(otheru->mnt);
|
||||
if (otheru->path.dentry) {
|
||||
path_get(&otheru->path);
|
||||
newu->path = otheru->path;
|
||||
}
|
||||
|
||||
/* Set credentials */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue