Commit 5bb44810 authored by Fabian Frederick's avatar Fabian Frederick Committed by Linus Torvalds

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.eduSigned-off-by: default avatarFabian Frederick <fabf@skynet.be>
Signed-off-by: default avatarJan 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: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 7f6118ce
...@@ -148,6 +148,16 @@ struct inode *coda_fid_to_inode(struct CodaFid *fid, struct super_block *sb) ...@@ -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 { ...@@ -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 *); ...@@ -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) ...@@ -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) ...@@ -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 ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment