coda: ftoc validity check integration
This patch moves cfi check in coda_ftoc() instead of repeating it in the wild. Module size text data bss dec hex filename 28297 1040 700 30037 7555 fs/coda/coda.ko.before 28263 980 700 29943 74f7 fs/coda/coda.ko.after Link: http://lkml.kernel.org/r/a2c27663ec4547018c92d71c63b1dff4650b6546.1558117389.git.jaharkes@cs.cmu.edu Signed-off-by: Fabian Frederick <fabf@skynet.be> Signed-off-by: Jan Harkes <jaharkes@cs.cmu.edu> Cc: Arnd Bergmann <arnd@arndb.de> Cc: Colin Ian King <colin.king@canonical.com> Cc: Dan Carpenter <dan.carpenter@oracle.com> Cc: David Howells <dhowells@redhat.com> Cc: Mikko Rapeli <mikko.rapeli@iki.fi> Cc: Sam Protsenko <semen.protsenko@linaro.org> Cc: Yann Droneaud <ydroneaud@opteya.com> Cc: Zhouyang Jia <jiazhouyang09@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
7f6118ce95
commit
5bb44810f4
|
@ -148,6 +148,16 @@ struct inode *coda_fid_to_inode(struct CodaFid *fid, struct super_block *sb)
|
||||||
return inode;
|
return inode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct coda_file_info *coda_ftoc(struct file *file)
|
||||||
|
{
|
||||||
|
struct coda_file_info *cfi = file->private_data;
|
||||||
|
|
||||||
|
BUG_ON(!cfi || cfi->cfi_magic != CODA_MAGIC);
|
||||||
|
|
||||||
|
return cfi;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/* the CONTROL inode is made without asking attributes from Venus */
|
/* the CONTROL inode is made without asking attributes from Venus */
|
||||||
struct inode *coda_cnode_makectl(struct super_block *sb)
|
struct inode *coda_cnode_makectl(struct super_block *sb)
|
||||||
{
|
{
|
||||||
|
|
|
@ -42,8 +42,6 @@ struct coda_file_info {
|
||||||
unsigned int cfi_mapcount; /* nr of times this file is mapped */
|
unsigned int cfi_mapcount; /* nr of times this file is mapped */
|
||||||
};
|
};
|
||||||
|
|
||||||
#define CODA_FTOC(file) ((struct coda_file_info *)((file)->private_data))
|
|
||||||
|
|
||||||
/* flags */
|
/* flags */
|
||||||
#define C_VATTR 0x1 /* Validity of vattr in inode */
|
#define C_VATTR 0x1 /* Validity of vattr in inode */
|
||||||
#define C_FLUSH 0x2 /* used after a flush */
|
#define C_FLUSH 0x2 /* used after a flush */
|
||||||
|
@ -54,6 +52,7 @@ struct inode *coda_cnode_make(struct CodaFid *, struct super_block *);
|
||||||
struct inode *coda_iget(struct super_block *sb, struct CodaFid *fid, struct coda_vattr *attr);
|
struct inode *coda_iget(struct super_block *sb, struct CodaFid *fid, struct coda_vattr *attr);
|
||||||
struct inode *coda_cnode_makectl(struct super_block *sb);
|
struct inode *coda_cnode_makectl(struct super_block *sb);
|
||||||
struct inode *coda_fid_to_inode(struct CodaFid *fid, struct super_block *sb);
|
struct inode *coda_fid_to_inode(struct CodaFid *fid, struct super_block *sb);
|
||||||
|
struct coda_file_info *coda_ftoc(struct file *file);
|
||||||
void coda_replace_fid(struct inode *, struct CodaFid *, struct CodaFid *);
|
void coda_replace_fid(struct inode *, struct CodaFid *, struct CodaFid *);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -356,8 +356,7 @@ static int coda_venus_readdir(struct file *coda_file, struct dir_context *ctx)
|
||||||
ino_t ino;
|
ino_t ino;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
cfi = CODA_FTOC(coda_file);
|
cfi = coda_ftoc(coda_file);
|
||||||
BUG_ON(!cfi || cfi->cfi_magic != CODA_MAGIC);
|
|
||||||
host_file = cfi->cfi_container;
|
host_file = cfi->cfi_container;
|
||||||
|
|
||||||
cii = ITOC(file_inode(coda_file));
|
cii = ITOC(file_inode(coda_file));
|
||||||
|
@ -426,8 +425,7 @@ static int coda_readdir(struct file *coda_file, struct dir_context *ctx)
|
||||||
struct file *host_file;
|
struct file *host_file;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
cfi = CODA_FTOC(coda_file);
|
cfi = coda_ftoc(coda_file);
|
||||||
BUG_ON(!cfi || cfi->cfi_magic != CODA_MAGIC);
|
|
||||||
host_file = cfi->cfi_container;
|
host_file = cfi->cfi_container;
|
||||||
|
|
||||||
if (host_file->f_op->iterate || host_file->f_op->iterate_shared) {
|
if (host_file->f_op->iterate || host_file->f_op->iterate_shared) {
|
||||||
|
|
|
@ -37,9 +37,7 @@ static ssize_t
|
||||||
coda_file_read_iter(struct kiocb *iocb, struct iov_iter *to)
|
coda_file_read_iter(struct kiocb *iocb, struct iov_iter *to)
|
||||||
{
|
{
|
||||||
struct file *coda_file = iocb->ki_filp;
|
struct file *coda_file = iocb->ki_filp;
|
||||||
struct coda_file_info *cfi = CODA_FTOC(coda_file);
|
struct coda_file_info *cfi = coda_ftoc(coda_file);
|
||||||
|
|
||||||
BUG_ON(!cfi || cfi->cfi_magic != CODA_MAGIC);
|
|
||||||
|
|
||||||
return vfs_iter_read(cfi->cfi_container, to, &iocb->ki_pos, 0);
|
return vfs_iter_read(cfi->cfi_container, to, &iocb->ki_pos, 0);
|
||||||
}
|
}
|
||||||
|
@ -49,12 +47,10 @@ coda_file_write_iter(struct kiocb *iocb, struct iov_iter *to)
|
||||||
{
|
{
|
||||||
struct file *coda_file = iocb->ki_filp;
|
struct file *coda_file = iocb->ki_filp;
|
||||||
struct inode *coda_inode = file_inode(coda_file);
|
struct inode *coda_inode = file_inode(coda_file);
|
||||||
struct coda_file_info *cfi = CODA_FTOC(coda_file);
|
struct coda_file_info *cfi = coda_ftoc(coda_file);
|
||||||
struct file *host_file;
|
struct file *host_file;
|
||||||
ssize_t ret;
|
ssize_t ret;
|
||||||
|
|
||||||
BUG_ON(!cfi || cfi->cfi_magic != CODA_MAGIC);
|
|
||||||
|
|
||||||
host_file = cfi->cfi_container;
|
host_file = cfi->cfi_container;
|
||||||
file_start_write(host_file);
|
file_start_write(host_file);
|
||||||
inode_lock(coda_inode);
|
inode_lock(coda_inode);
|
||||||
|
@ -105,8 +101,7 @@ coda_file_mmap(struct file *coda_file, struct vm_area_struct *vma)
|
||||||
struct coda_vm_ops *cvm_ops;
|
struct coda_vm_ops *cvm_ops;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
cfi = CODA_FTOC(coda_file);
|
cfi = coda_ftoc(coda_file);
|
||||||
BUG_ON(!cfi || cfi->cfi_magic != CODA_MAGIC);
|
|
||||||
host_file = cfi->cfi_container;
|
host_file = cfi->cfi_container;
|
||||||
|
|
||||||
if (!host_file->f_op->mmap)
|
if (!host_file->f_op->mmap)
|
||||||
|
@ -208,8 +203,7 @@ int coda_release(struct inode *coda_inode, struct file *coda_file)
|
||||||
struct inode *host_inode;
|
struct inode *host_inode;
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
cfi = CODA_FTOC(coda_file);
|
cfi = coda_ftoc(coda_file);
|
||||||
BUG_ON(!cfi || cfi->cfi_magic != CODA_MAGIC);
|
|
||||||
|
|
||||||
err = venus_close(coda_inode->i_sb, coda_i2f(coda_inode),
|
err = venus_close(coda_inode->i_sb, coda_i2f(coda_inode),
|
||||||
coda_flags, coda_file->f_cred->fsuid);
|
coda_flags, coda_file->f_cred->fsuid);
|
||||||
|
@ -251,8 +245,7 @@ int coda_fsync(struct file *coda_file, loff_t start, loff_t end, int datasync)
|
||||||
return err;
|
return err;
|
||||||
inode_lock(coda_inode);
|
inode_lock(coda_inode);
|
||||||
|
|
||||||
cfi = CODA_FTOC(coda_file);
|
cfi = coda_ftoc(coda_file);
|
||||||
BUG_ON(!cfi || cfi->cfi_magic != CODA_MAGIC);
|
|
||||||
host_file = cfi->cfi_container;
|
host_file = cfi->cfi_container;
|
||||||
|
|
||||||
err = vfs_fsync(host_file, datasync);
|
err = vfs_fsync(host_file, datasync);
|
||||||
|
|
Loading…
Reference in New Issue