git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Revert to Fedora kernel-2.6.17-1.2187_FC5 patched with vs2.0.2.1; there are too many...
[linux-2.6.git]
/
fs
/
9p
/
vfs_inode.c
diff --git
a/fs/9p/vfs_inode.c
b/fs/9p/vfs_inode.c
index
7a7ec2d
..
2cb87ba
100644
(file)
--- 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_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;
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:
fid = V9FS_NOFID;
put_fid:
- if (fid
!= V9FS_NOFID
)
+ if (fid
>= 0
)
v9fs_put_idpool(fid, &v9ses->fidpool);
kfree(fcall);
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);
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;
}
kfree(fcall);
return result;
}
@@
-529,6
+530,9
@@
error:
if (vfid)
v9fs_fid_destroy(vfid);
if (vfid)
v9fs_fid_destroy(vfid);
+ if (inode)
+ iput(inode);
+
return err;
}
return err;
}
@@
-949,8
+953,9
@@
v9fs_stat2inode(struct v9fs_stat *stat, struct inode *inode,
inode->i_size = stat->length;
inode->i_size = stat->length;
+ inode->i_blksize = sb->s_blocksize;
inode->i_blocks =
inode->i_blocks =
- (inode->i_size +
sb->s_bloc
ksize - 1) >> sb->s_blocksize_bits;
+ (inode->i_size +
inode->i_bl
ksize - 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();
int ret;
char *link = __getname();
- if (unlikely(!link))
- return -ENOMEM;
-
if (buflen > PATH_MAX)
buflen = PATH_MAX;
if (buflen > PATH_MAX)
buflen = PATH_MAX;
@@
-1169,6
+1171,9
@@
error:
if (vfid)
v9fs_fid_destroy(vfid);
if (vfid)
v9fs_fid_destroy(vfid);
+ if (inode)
+ iput(inode);
+
return err;
}
return err;
}
@@
-1222,9
+1227,6
@@
v9fs_vfs_link(struct dentry *old_dentry, struct inode *dir,
}
name = __getname();
}
name = __getname();
- if (unlikely(!name))
- return -ENOMEM;
-
sprintf(name, "%d\n", oldfid->fid);
retval = v9fs_vfs_mkspecial(dir, dentry, V9FS_DMLINK, name);
__putname(name);
sprintf(name, "%d\n", oldfid->fid);
retval = v9fs_vfs_mkspecial(dir, dentry, V9FS_DMLINK, name);
__putname(name);