diff options
| author | Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> | 2011-05-20 18:55:51 +0000 | 
|---|---|---|
| committer | Eric Van Hensbergen <ericvh@gmail.com> | 2011-05-25 08:46:38 -0500 | 
| commit | 398c4f0efb5c2f07fe2f5cd67031b15fd3e920c9 (patch) | |
| tree | 04ac97f2a5a50bb40c16a6784fa56611f530240f /fs/9p | |
| parent | 08bb3a5076500adaf16af11f5813c8eb43f3c9a9 (diff) | |
fs/9p: Don't clunk dentry fid when we fail to get a writeback inode
The dentry fid get clunked via the dput.
Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Signed-off-by: Eric Van Hensbergen <ericvh@gmail.com>
Diffstat (limited to 'fs/9p')
| -rw-r--r-- | fs/9p/vfs_inode_dotl.c | 11 | 
1 files changed, 6 insertions, 5 deletions
diff --git a/fs/9p/vfs_inode_dotl.c b/fs/9p/vfs_inode_dotl.c index 82a7c38ddad0..691c78f58bef 100644 --- a/fs/9p/vfs_inode_dotl.c +++ b/fs/9p/vfs_inode_dotl.c @@ -259,7 +259,7 @@ v9fs_vfs_create_dotl(struct inode *dir, struct dentry *dentry, int omode,  		if (IS_ERR(inode_fid)) {  			err = PTR_ERR(inode_fid);  			mutex_unlock(&v9inode->v_mutex); -			goto error; +			goto err_clunk_old_fid;  		}  		v9inode->writeback_fid = (void *) inode_fid;  	} @@ -267,8 +267,8 @@ v9fs_vfs_create_dotl(struct inode *dir, struct dentry *dentry, int omode,  	/* Since we are opening a file, assign the open fid to the file */  	filp = lookup_instantiate_filp(nd, dentry, generic_file_open);  	if (IS_ERR(filp)) { -		p9_client_clunk(ofid); -		return PTR_ERR(filp); +		err = PTR_ERR(filp); +		goto err_clunk_old_fid;  	}  	filp->private_data = ofid;  #ifdef CONFIG_9P_FSCACHE @@ -278,10 +278,11 @@ v9fs_vfs_create_dotl(struct inode *dir, struct dentry *dentry, int omode,  	return 0;  error: -	if (ofid) -		p9_client_clunk(ofid);  	if (fid)  		p9_client_clunk(fid); +err_clunk_old_fid: +	if (ofid) +		p9_client_clunk(ofid);  	return err;  }  | 
