Loading include/net/af_unix.h +1 −2 Original line number Diff line number Diff line Loading @@ -49,8 +49,7 @@ struct unix_sock { /* WARNING: sk has to be the first member */ struct sock sk; struct unix_address *addr; struct dentry *dentry; struct vfsmount *mnt; struct path path; struct mutex readlock; struct sock *peer; struct sock *other; Loading net/unix/af_unix.c +15 −20 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -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; Loading @@ -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); Loading Loading @@ -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); Loading Loading @@ -628,8 +624,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); Loading Loading @@ -789,9 +785,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.mnt, dentry); } else goto fail; } Loading Loading @@ -897,8 +893,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; Loading Loading @@ -1180,9 +1175,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 net/unix/diag.c +1 −1 Original line number Diff line number Diff line Loading @@ -29,7 +29,7 @@ rtattr_failure: static int sk_diag_dump_vfs(struct sock *sk, struct sk_buff *nlskb) { struct dentry *dentry = unix_sk(sk)->dentry; struct dentry *dentry = unix_sk(sk)->path.dentry; struct unix_diag_vfs *uv; if (dentry) { Loading security/lsm_audit.c +2 −6 Original line number Diff line number Diff line Loading @@ -313,12 +313,8 @@ static void dump_common_audit_data(struct audit_buffer *ab, } case AF_UNIX: u = unix_sk(sk); if (u->dentry) { struct path path = { .dentry = u->dentry, .mnt = u->mnt }; audit_log_d_path(ab, " path=", &path); if (u->path.dentry) { audit_log_d_path(ab, " path=", &u->path); break; } if (!u->addr) Loading Loading
include/net/af_unix.h +1 −2 Original line number Diff line number Diff line Loading @@ -49,8 +49,7 @@ struct unix_sock { /* WARNING: sk has to be the first member */ struct sock sk; struct unix_address *addr; struct dentry *dentry; struct vfsmount *mnt; struct path path; struct mutex readlock; struct sock *peer; struct sock *other; Loading
net/unix/af_unix.c +15 −20 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -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; Loading @@ -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); Loading Loading @@ -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); Loading Loading @@ -628,8 +624,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); Loading Loading @@ -789,9 +785,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.mnt, dentry); } else goto fail; } Loading Loading @@ -897,8 +893,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; Loading Loading @@ -1180,9 +1175,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
net/unix/diag.c +1 −1 Original line number Diff line number Diff line Loading @@ -29,7 +29,7 @@ rtattr_failure: static int sk_diag_dump_vfs(struct sock *sk, struct sk_buff *nlskb) { struct dentry *dentry = unix_sk(sk)->dentry; struct dentry *dentry = unix_sk(sk)->path.dentry; struct unix_diag_vfs *uv; if (dentry) { Loading
security/lsm_audit.c +2 −6 Original line number Diff line number Diff line Loading @@ -313,12 +313,8 @@ static void dump_common_audit_data(struct audit_buffer *ab, } case AF_UNIX: u = unix_sk(sk); if (u->dentry) { struct path path = { .dentry = u->dentry, .mnt = u->mnt }; audit_log_d_path(ab, " path=", &path); if (u->path.dentry) { audit_log_d_path(ab, " path=", &u->path); break; } if (!u->addr) Loading