Skip to content

Commit

Permalink
[PATCH] hppfs: fix symlink error path
Browse files Browse the repository at this point in the history
While touching this code I noticed the error handling is bogus, so I
fixed it up.

I've removed the IS_ERR(proc_dentry) check, which will never trigger and
is clearly a typo: we must check proc_file instead.

Signed-off-by: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
  • Loading branch information
Paolo 'Blaisorblade' Giarrusso authored and Linus Torvalds committed Aug 26, 2005
1 parent d7a60d5 commit fd589e0
Showing 1 changed file with 9 additions and 15 deletions.
24 changes: 9 additions & 15 deletions fs/hppfs/hppfs_kern.c
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ struct hppfs_inode_info {

static inline struct hppfs_inode_info *HPPFS_I(struct inode *inode)
{
return(list_entry(inode, struct hppfs_inode_info, vfs_inode));
return container_of(inode, struct hppfs_inode_info, vfs_inode);
}

#define HPPFS_SUPER_MAGIC 0xb00000ee
Expand Down Expand Up @@ -662,38 +662,32 @@ static int hppfs_readlink(struct dentry *dentry, char *buffer, int buflen)
{
struct file *proc_file;
struct dentry *proc_dentry;
int (*readlink)(struct dentry *, char *, int);
int err, n;
int ret;

proc_dentry = HPPFS_I(dentry->d_inode)->proc_dentry;
proc_file = dentry_open(dget(proc_dentry), NULL, O_RDONLY);
err = PTR_ERR(proc_dentry);
if(IS_ERR(proc_dentry))
return(err);
if (IS_ERR(proc_file))
return PTR_ERR(proc_file);

readlink = proc_dentry->d_inode->i_op->readlink;
n = (*readlink)(proc_dentry, buffer, buflen);
ret = proc_dentry->d_inode->i_op->readlink(proc_dentry, buffer, buflen);

fput(proc_file);

return(n);
return ret;
}

static void* hppfs_follow_link(struct dentry *dentry, struct nameidata *nd)
{
struct file *proc_file;
struct dentry *proc_dentry;
void * (*follow_link)(struct dentry *, struct nameidata *);
void *ret;

proc_dentry = HPPFS_I(dentry->d_inode)->proc_dentry;
proc_file = dentry_open(dget(proc_dentry), NULL, O_RDONLY);
if (IS_ERR(proc_file))
return proc_file;

if (IS_ERR(proc_dentry))
return proc_dentry;

follow_link = proc_dentry->d_inode->i_op->follow_link;
ret = (*follow_link)(proc_dentry, nd);
ret = proc_dentry->d_inode->i_op->follow_link(proc_dentry, nd);

fput(proc_file);

Expand Down

0 comments on commit fd589e0

Please sign in to comment.