summaryrefslogtreecommitdiffstats
path: root/fs/coda/dir.c
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2012-01-10 10:46:03 -0500
committerAl Viro <viro@zeniv.linux.org.uk>2012-01-10 11:13:13 -0500
commit0b2c4e39c014219ef73f05ab580c284bf8e6af0a (patch)
tree4447c0dbab25dc209f267c17123845b1d3bb8273 /fs/coda/dir.c
parent3e25eb9c4bb649acdddb333d10774b640190f727 (diff)
downloadlinux-stable-0b2c4e39c014219ef73f05ab580c284bf8e6af0a.tar.gz
linux-stable-0b2c4e39c014219ef73f05ab580c284bf8e6af0a.tar.bz2
linux-stable-0b2c4e39c014219ef73f05ab580c284bf8e6af0a.zip
coda: deal correctly with allocation failure from coda_cnode_makectl()
lookup should fail with ENOMEM, not silently make dentry negative. Switched to saner calling conventions, while we are at it. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/coda/dir.c')
-rw-r--r--fs/coda/dir.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/fs/coda/dir.c b/fs/coda/dir.c
index 83d2fd8ec24b..df0f9c1b01d3 100644
--- a/fs/coda/dir.c
+++ b/fs/coda/dir.c
@@ -111,7 +111,7 @@ static struct dentry *coda_lookup(struct inode *dir, struct dentry *entry, struc
/* control object, create inode on the fly */
if (coda_isroot(dir) && coda_iscontrol(name, length)) {
- error = coda_cnode_makectl(&inode, dir->i_sb);
+ inode = coda_cnode_makectl(dir->i_sb);
type = CODA_NOCACHE;
goto exit;
}
@@ -125,7 +125,7 @@ static struct dentry *coda_lookup(struct inode *dir, struct dentry *entry, struc
return ERR_PTR(error);
exit:
- if (inode && (type & CODA_NOCACHE))
+ if (inode && !IS_ERR(inode) && (type & CODA_NOCACHE))
coda_flag_inode(inode, C_VATTR | C_PURGE);
return d_splice_alias(inode, entry);