&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;
                }
                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;
                        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];
 
 
        if (dentry) {
                struct unix_diag_vfs uv = {
-                       .udiag_vfs_ino = dentry->d_inode->i_ino,
+                       .udiag_vfs_ino = d_backing_inode(dentry)->i_ino,
                        .udiag_vfs_dev = dentry->d_sb->s_dev,
                };