Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull more VFS bits from Al Viro: "Unfortunately, it looks like xattr series will have to wait until the next cycle ;-/ This pile contains 9p cleanups and fixes (races in v9fs_fid_add() etc), fixup for nommu breakage in shmem.c, several cleanups and a bit more file_inode() work" * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: constify path_get/path_put and fs_struct.c stuff fix nommu breakage in shmem.c cache the value of file_inode() in struct file 9p: if v9fs_fid_lookup() gets to asking server, it'd better have hashed dentry 9p: make sure ->lookup() adds fid to the right dentry 9p: untangle ->lookup() a bit 9p: double iput() in ->lookup() if d_materialise_unique() fails 9p: v9fs_fid_add() can't fail now v9fs: get rid of v9fs_dentry 9p: turn fid->dlist into hlist 9p: don't bother with private lock in ->d_fsdata; dentry->d_lock will do just fine more file_inode() open-coded instances selinux: opened file can't have NULL or negative ->f_path.dentry (In the meantime, the hlist traversal macros have changed, so this required a semantic conflict fixup for the newly hlistified fid->dlist)
This commit is contained in:
@@ -769,6 +769,7 @@ struct file {
|
||||
} f_u;
|
||||
struct path f_path;
|
||||
#define f_dentry f_path.dentry
|
||||
struct inode *f_inode; /* cached value */
|
||||
const struct file_operations *f_op;
|
||||
|
||||
/*
|
||||
@@ -2217,7 +2218,7 @@ static inline bool execute_ok(struct inode *inode)
|
||||
|
||||
static inline struct inode *file_inode(struct file *f)
|
||||
{
|
||||
return f->f_path.dentry->d_inode;
|
||||
return f->f_inode;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@@ -17,8 +17,8 @@ struct fs_struct {
|
||||
extern struct kmem_cache *fs_cachep;
|
||||
|
||||
extern void exit_fs(struct task_struct *);
|
||||
extern void set_fs_root(struct fs_struct *, struct path *);
|
||||
extern void set_fs_pwd(struct fs_struct *, struct path *);
|
||||
extern void set_fs_root(struct fs_struct *, const struct path *);
|
||||
extern void set_fs_pwd(struct fs_struct *, const struct path *);
|
||||
extern struct fs_struct *copy_fs_struct(struct fs_struct *);
|
||||
extern void free_fs_struct(struct fs_struct *);
|
||||
extern int unshare_fs_struct(void);
|
||||
|
@@ -9,8 +9,8 @@ struct path {
|
||||
struct dentry *dentry;
|
||||
};
|
||||
|
||||
extern void path_get(struct path *);
|
||||
extern void path_put(struct path *);
|
||||
extern void path_get(const struct path *);
|
||||
extern void path_put(const struct path *);
|
||||
|
||||
static inline int path_equal(const struct path *path1, const struct path *path2)
|
||||
{
|
||||
|
Reference in New Issue
Block a user