aboutsummaryrefslogtreecommitdiffstats
path: root/fs/9p/vfs_inode.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/9p/vfs_inode.c')
-rw-r--r--fs/9p/vfs_inode.c24
1 files changed, 11 insertions, 13 deletions
diff --git a/fs/9p/vfs_inode.c b/fs/9p/vfs_inode.c
index 2cb87ba4b1c1..7a7ec2d1d2f4 100644
--- a/fs/9p/vfs_inode.c
+++ b/fs/9p/vfs_inode.c
@@ -204,7 +204,6 @@ struct inode *v9fs_get_inode(struct super_block *sb, int mode)
204 inode->i_mode = mode; 204 inode->i_mode = mode;
205 inode->i_uid = current->fsuid; 205 inode->i_uid = current->fsuid;
206 inode->i_gid = current->fsgid; 206 inode->i_gid = current->fsgid;
207 inode->i_blksize = sb->s_blocksize;
208 inode->i_blocks = 0; 207 inode->i_blocks = 0;
209 inode->i_rdev = 0; 208 inode->i_rdev = 0;
210 inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME; 209 inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME;
@@ -300,7 +299,7 @@ clunk_fid:
300 fid = V9FS_NOFID; 299 fid = V9FS_NOFID;
301 300
302put_fid: 301put_fid:
303 if (fid >= 0) 302 if (fid != V9FS_NOFID)
304 v9fs_put_idpool(fid, &v9ses->fidpool); 303 v9fs_put_idpool(fid, &v9ses->fidpool);
305 304
306 kfree(fcall); 305 kfree(fcall);
@@ -434,11 +433,11 @@ static int v9fs_remove(struct inode *dir, struct dentry *file, int rmdir)
434 result = v9fs_t_remove(v9ses, fid, &fcall); 433 result = v9fs_t_remove(v9ses, fid, &fcall);
435 if (result < 0) { 434 if (result < 0) {
436 PRINT_FCALL_ERROR("remove fails", fcall); 435 PRINT_FCALL_ERROR("remove fails", fcall);
437 } else {
438 v9fs_put_idpool(fid, &v9ses->fidpool);
439 v9fs_fid_destroy(v9fid);
440 } 436 }
441 437
438 v9fs_put_idpool(fid, &v9ses->fidpool);
439 v9fs_fid_destroy(v9fid);
440
442 kfree(fcall); 441 kfree(fcall);
443 return result; 442 return result;
444} 443}
@@ -530,9 +529,6 @@ error:
530 if (vfid) 529 if (vfid)
531 v9fs_fid_destroy(vfid); 530 v9fs_fid_destroy(vfid);
532 531
533 if (inode)
534 iput(inode);
535
536 return err; 532 return err;
537} 533}
538 534
@@ -953,9 +949,8 @@ v9fs_stat2inode(struct v9fs_stat *stat, struct inode *inode,
953 949
954 inode->i_size = stat->length; 950 inode->i_size = stat->length;
955 951
956 inode->i_blksize = sb->s_blocksize;
957 inode->i_blocks = 952 inode->i_blocks =
958 (inode->i_size + inode->i_blksize - 1) >> sb->s_blocksize_bits; 953 (inode->i_size + sb->s_blocksize - 1) >> sb->s_blocksize_bits;
959} 954}
960 955
961/** 956/**
@@ -1054,6 +1049,9 @@ static int v9fs_vfs_readlink(struct dentry *dentry, char __user * buffer,
1054 int ret; 1049 int ret;
1055 char *link = __getname(); 1050 char *link = __getname();
1056 1051
1052 if (unlikely(!link))
1053 return -ENOMEM;
1054
1057 if (buflen > PATH_MAX) 1055 if (buflen > PATH_MAX)
1058 buflen = PATH_MAX; 1056 buflen = PATH_MAX;
1059 1057
@@ -1171,9 +1169,6 @@ error:
1171 if (vfid) 1169 if (vfid)
1172 v9fs_fid_destroy(vfid); 1170 v9fs_fid_destroy(vfid);
1173 1171
1174 if (inode)
1175 iput(inode);
1176
1177 return err; 1172 return err;
1178 1173
1179} 1174}
@@ -1227,6 +1222,9 @@ v9fs_vfs_link(struct dentry *old_dentry, struct inode *dir,
1227 } 1222 }
1228 1223
1229 name = __getname(); 1224 name = __getname();
1225 if (unlikely(!name))
1226 return -ENOMEM;
1227
1230 sprintf(name, "%d\n", oldfid->fid); 1228 sprintf(name, "%d\n", oldfid->fid);
1231 retval = v9fs_vfs_mkspecial(dir, dentry, V9FS_DMLINK, name); 1229 retval = v9fs_vfs_mkspecial(dir, dentry, V9FS_DMLINK, name);
1232 __putname(name); 1230 __putname(name);