diff options
| author | Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it> | 2005-08-26 16:57:53 +0200 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-08-26 11:39:19 -0700 | 
| commit | fd589e0b662c1ea8cfb1e0d20d60a2510979865b (patch) | |
| tree | 5c281ab99184fa6dcfb09586064ea7751c32fd4c /fs/hppfs/hppfs_kern.c | |
| parent | d7a60d50d7713b65a3fd88f11d5717b83a6b6a97 (diff) | |
[PATCH] hppfs: fix symlink error path
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>
Diffstat (limited to 'fs/hppfs/hppfs_kern.c')
| -rw-r--r-- | fs/hppfs/hppfs_kern.c | 24 | 
1 files changed, 9 insertions, 15 deletions
| diff --git a/fs/hppfs/hppfs_kern.c b/fs/hppfs/hppfs_kern.c index 385d440fa234..52930915bad8 100644 --- a/fs/hppfs/hppfs_kern.c +++ b/fs/hppfs/hppfs_kern.c @@ -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 @@ -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); | 
