|
@@ -305,7 +305,7 @@ static struct sock *unix_find_socket_byinode(struct inode *i)
|
|
|
&unix_socket_table[i->i_ino & (UNIX_HASH_SIZE - 1)]) {
|
|
|
struct dentry *dentry = unix_sk(s)->path.dentry;
|
|
|
|
|
|
- if (dentry && dentry->d_inode == i) {
|
|
|
+ if (dentry && d_backing_inode(dentry) == i) {
|
|
|
sock_hold(s);
|
|
|
goto found;
|
|
|
}
|
|
@@ -778,7 +778,7 @@ static struct sock *unix_find_other(struct net *net,
|
|
|
err = kern_path(sunname->sun_path, LOOKUP_FOLLOW, &path);
|
|
|
if (err)
|
|
|
goto fail;
|
|
|
- inode = path.dentry->d_inode;
|
|
|
+ inode = d_backing_inode(path.dentry);
|
|
|
err = inode_permission(inode, MAY_WRITE);
|
|
|
if (err)
|
|
|
goto put_fail;
|
|
@@ -905,7 +905,7 @@ static int unix_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len)
|
|
|
goto out_up;
|
|
|
}
|
|
|
addr->hash = UNIX_HASH_SIZE;
|
|
|
- hash = path.dentry->d_inode->i_ino & (UNIX_HASH_SIZE-1);
|
|
|
+ hash = d_backing_inode(path.dentry)->i_ino & (UNIX_HASH_SIZE-1);
|
|
|
spin_lock(&unix_table_lock);
|
|
|
u->path = path;
|
|
|
list = &unix_socket_table[hash];
|