aboutsummaryrefslogtreecommitdiffstats
path: root/fs/9p/vfs_inode.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2010-04-05 16:42:54 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2010-04-05 16:42:54 -0400
commit749d229761ff0135cc4e16b8a28b41ae2f6b2c35 (patch)
tree25551c8cfb38319211f5ee59e78462a0f6fb85c4 /fs/9p/vfs_inode.c
parent795d580baec0d5386b83a8b557df47c20810e86b (diff)
parent3dc9fef67f6292692dba181a6d0fd0211bd0a607 (diff)
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs: 9p: saving negative to unsigned char 9p: return on mutex_lock_interruptible() 9p: Creating files with names too long should fail with ENAMETOOLONG. 9p: Make sure we are able to clunk the cached fid on umount 9p: drop nlink remove fs/9p: Clunk the fid resulting from partial walk of the name 9p: documentation update 9p: Fix setting of protocol flags in v9fs_session_info structure.
Diffstat (limited to 'fs/9p/vfs_inode.c')
-rw-r--r--fs/9p/vfs_inode.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/fs/9p/vfs_inode.c b/fs/9p/vfs_inode.c
index 63c2b5af268a..f2434fc9d2c4 100644
--- a/fs/9p/vfs_inode.c
+++ b/fs/9p/vfs_inode.c
@@ -432,6 +432,7 @@ error:
432 432
433static int v9fs_remove(struct inode *dir, struct dentry *file, int rmdir) 433static int v9fs_remove(struct inode *dir, struct dentry *file, int rmdir)
434{ 434{
435 int retval;
435 struct inode *file_inode; 436 struct inode *file_inode;
436 struct v9fs_session_info *v9ses; 437 struct v9fs_session_info *v9ses;
437 struct p9_fid *v9fid; 438 struct p9_fid *v9fid;
@@ -445,7 +446,10 @@ static int v9fs_remove(struct inode *dir, struct dentry *file, int rmdir)
445 if (IS_ERR(v9fid)) 446 if (IS_ERR(v9fid))
446 return PTR_ERR(v9fid); 447 return PTR_ERR(v9fid);
447 448
448 return p9_client_remove(v9fid); 449 retval = p9_client_remove(v9fid);
450 if (!retval)
451 drop_nlink(file_inode);
452 return retval;
449} 453}
450 454
451static int 455static int
@@ -657,6 +661,9 @@ static struct dentry *v9fs_vfs_lookup(struct inode *dir, struct dentry *dentry,
657 P9_DPRINTK(P9_DEBUG_VFS, "dir: %p dentry: (%s) %p nameidata: %p\n", 661 P9_DPRINTK(P9_DEBUG_VFS, "dir: %p dentry: (%s) %p nameidata: %p\n",
658 dir, dentry->d_name.name, dentry, nameidata); 662 dir, dentry->d_name.name, dentry, nameidata);
659 663
664 if (dentry->d_name.len > NAME_MAX)
665 return ERR_PTR(-ENAMETOOLONG);
666
660 sb = dir->i_sb; 667 sb = dir->i_sb;
661 v9ses = v9fs_inode2v9ses(dir); 668 v9ses = v9fs_inode2v9ses(dir);
662 dfid = v9fs_fid_lookup(dentry->d_parent); 669 dfid = v9fs_fid_lookup(dentry->d_parent);