From 99ce4169a9ff1c6ecdcccf01638eb6d76e5d84d1 Mon Sep 17 00:00:00 2001 From: Al Viro Date: Fri, 17 May 2013 22:45:29 -0400 Subject: reiserfs: is_privroot_deh() needs only directory inode, actually ... and that - only to get the superblock. Privroot is a directory and we don't allow hardlinks to those... Signed-off-by: Al Viro --- fs/reiserfs/dir.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'fs/reiserfs/dir.c') diff --git a/fs/reiserfs/dir.c b/fs/reiserfs/dir.c index cba70165e9c5..df25fff3714a 100644 --- a/fs/reiserfs/dir.c +++ b/fs/reiserfs/dir.c @@ -50,11 +50,10 @@ static int reiserfs_dir_fsync(struct file *filp, loff_t start, loff_t end, #define store_ih(where,what) copy_item_head (where, what) -static inline bool is_privroot_deh(struct dentry *dir, - struct reiserfs_de_head *deh) +static inline bool is_privroot_deh(struct inode *dir, struct reiserfs_de_head *deh) { - struct dentry *privroot = REISERFS_SB(dir->d_sb)->priv_root; - return (dir == dir->d_parent && privroot->d_inode && + struct dentry *privroot = REISERFS_SB(dir->i_sb)->priv_root; + return (privroot->d_inode && deh->deh_objectid == INODE_PKEY(privroot->d_inode)->k_objectid); } @@ -153,7 +152,7 @@ int reiserfs_readdir_dentry(struct dentry *dentry, struct dir_context *ctx) } /* Ignore the .reiserfs_priv entry */ - if (is_privroot_deh(dentry, deh)) + if (is_privroot_deh(inode, deh)) continue; ctx->pos = deh_offset(deh); -- cgit v1.2.3