X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=fs%2F9p%2Fvfs_inode.c;h=2cb87ba4b1c1fa76ab685d213ae6e0f33a53dcf8;hb=9464c7cf61b9433057924c36e6e02f303a00e768;hp=7a7ec2d1d2f4a8f60bb79c2f82bc0f110f9509b9;hpb=41689045f6a3cbe0550e1d34e9cc20d2e8c432ba;p=linux-2.6.git diff --git a/fs/9p/vfs_inode.c b/fs/9p/vfs_inode.c index 7a7ec2d1d..2cb87ba4b 100644 --- a/fs/9p/vfs_inode.c +++ b/fs/9p/vfs_inode.c @@ -204,6 +204,7 @@ struct inode *v9fs_get_inode(struct super_block *sb, int mode) inode->i_mode = mode; inode->i_uid = current->fsuid; inode->i_gid = current->fsgid; + inode->i_blksize = sb->s_blocksize; inode->i_blocks = 0; inode->i_rdev = 0; inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME; @@ -299,7 +300,7 @@ clunk_fid: fid = V9FS_NOFID; put_fid: - if (fid != V9FS_NOFID) + if (fid >= 0) v9fs_put_idpool(fid, &v9ses->fidpool); kfree(fcall); @@ -433,11 +434,11 @@ static int v9fs_remove(struct inode *dir, struct dentry *file, int rmdir) result = v9fs_t_remove(v9ses, fid, &fcall); if (result < 0) { PRINT_FCALL_ERROR("remove fails", fcall); + } else { + v9fs_put_idpool(fid, &v9ses->fidpool); + v9fs_fid_destroy(v9fid); } - v9fs_put_idpool(fid, &v9ses->fidpool); - v9fs_fid_destroy(v9fid); - kfree(fcall); return result; } @@ -529,6 +530,9 @@ error: if (vfid) v9fs_fid_destroy(vfid); + if (inode) + iput(inode); + return err; } @@ -949,8 +953,9 @@ v9fs_stat2inode(struct v9fs_stat *stat, struct inode *inode, inode->i_size = stat->length; + inode->i_blksize = sb->s_blocksize; inode->i_blocks = - (inode->i_size + sb->s_blocksize - 1) >> sb->s_blocksize_bits; + (inode->i_size + inode->i_blksize - 1) >> sb->s_blocksize_bits; } /** @@ -1049,9 +1054,6 @@ static int v9fs_vfs_readlink(struct dentry *dentry, char __user * buffer, int ret; char *link = __getname(); - if (unlikely(!link)) - return -ENOMEM; - if (buflen > PATH_MAX) buflen = PATH_MAX; @@ -1169,6 +1171,9 @@ error: if (vfid) v9fs_fid_destroy(vfid); + if (inode) + iput(inode); + return err; } @@ -1222,9 +1227,6 @@ v9fs_vfs_link(struct dentry *old_dentry, struct inode *dir, } name = __getname(); - if (unlikely(!name)) - return -ENOMEM; - sprintf(name, "%d\n", oldfid->fid); retval = v9fs_vfs_mkspecial(dir, dentry, V9FS_DMLINK, name); __putname(name);