Loading fs/overlayfs/namei.c +2 −1 Original line number Diff line number Diff line Loading @@ -435,7 +435,6 @@ struct dentry *ovl_lookup(struct inode *dir, struct dentry *dentry, oe->opaque = upperopaque; oe->impure = upperimpure; oe->redirect = upperredirect; memcpy(oe->lowerstack, stack, sizeof(struct path) * ctr); dentry->d_fsdata = oe; Loading @@ -444,6 +443,8 @@ struct dentry *ovl_lookup(struct inode *dir, struct dentry *dentry, inode = ovl_get_inode(dentry, upperdentry); if (!inode) goto out_free_oe; OVL_I(inode)->redirect = upperredirect; } revert_creds(old_cred); Loading fs/overlayfs/ovl_entry.h +1 −1 Original line number Diff line number Diff line Loading @@ -40,7 +40,6 @@ struct ovl_entry { union { struct { u64 version; const char *redirect; bool opaque; bool impure; bool copying; Loading @@ -54,6 +53,7 @@ struct ovl_entry { struct ovl_entry *ovl_alloc_entry(unsigned int numlower); struct ovl_inode { const char *redirect; struct inode vfs_inode; struct dentry *__upperdentry; struct inode *lower; Loading fs/overlayfs/super.c +2 −1 Original line number Diff line number Diff line Loading @@ -41,7 +41,6 @@ static void ovl_dentry_release(struct dentry *dentry) if (oe) { unsigned int i; kfree(oe->redirect); for (i = 0; i < oe->numlower; i++) dput(oe->lowerstack[i].dentry); kfree_rcu(oe, rcu); Loading Loading @@ -170,6 +169,7 @@ static struct inode *ovl_alloc_inode(struct super_block *sb) { struct ovl_inode *oi = kmem_cache_alloc(ovl_inode_cachep, GFP_KERNEL); oi->redirect = NULL; oi->__upperdentry = NULL; oi->lower = NULL; Loading @@ -188,6 +188,7 @@ static void ovl_destroy_inode(struct inode *inode) struct ovl_inode *oi = OVL_I(inode); dput(oi->__upperdentry); kfree(oi->redirect); call_rcu(&inode->i_rcu, ovl_i_callback); } Loading fs/overlayfs/util.c +4 −6 Original line number Diff line number Diff line Loading @@ -206,17 +206,15 @@ bool ovl_redirect_dir(struct super_block *sb) const char *ovl_dentry_get_redirect(struct dentry *dentry) { struct ovl_entry *oe = dentry->d_fsdata; return oe->redirect; return OVL_I(d_inode(dentry))->redirect; } void ovl_dentry_set_redirect(struct dentry *dentry, const char *redirect) { struct ovl_entry *oe = dentry->d_fsdata; struct ovl_inode *oi = OVL_I(d_inode(dentry)); kfree(oe->redirect); oe->redirect = redirect; kfree(oi->redirect); oi->redirect = redirect; } void ovl_inode_init(struct inode *inode, struct dentry *upperdentry, Loading Loading
fs/overlayfs/namei.c +2 −1 Original line number Diff line number Diff line Loading @@ -435,7 +435,6 @@ struct dentry *ovl_lookup(struct inode *dir, struct dentry *dentry, oe->opaque = upperopaque; oe->impure = upperimpure; oe->redirect = upperredirect; memcpy(oe->lowerstack, stack, sizeof(struct path) * ctr); dentry->d_fsdata = oe; Loading @@ -444,6 +443,8 @@ struct dentry *ovl_lookup(struct inode *dir, struct dentry *dentry, inode = ovl_get_inode(dentry, upperdentry); if (!inode) goto out_free_oe; OVL_I(inode)->redirect = upperredirect; } revert_creds(old_cred); Loading
fs/overlayfs/ovl_entry.h +1 −1 Original line number Diff line number Diff line Loading @@ -40,7 +40,6 @@ struct ovl_entry { union { struct { u64 version; const char *redirect; bool opaque; bool impure; bool copying; Loading @@ -54,6 +53,7 @@ struct ovl_entry { struct ovl_entry *ovl_alloc_entry(unsigned int numlower); struct ovl_inode { const char *redirect; struct inode vfs_inode; struct dentry *__upperdentry; struct inode *lower; Loading
fs/overlayfs/super.c +2 −1 Original line number Diff line number Diff line Loading @@ -41,7 +41,6 @@ static void ovl_dentry_release(struct dentry *dentry) if (oe) { unsigned int i; kfree(oe->redirect); for (i = 0; i < oe->numlower; i++) dput(oe->lowerstack[i].dentry); kfree_rcu(oe, rcu); Loading Loading @@ -170,6 +169,7 @@ static struct inode *ovl_alloc_inode(struct super_block *sb) { struct ovl_inode *oi = kmem_cache_alloc(ovl_inode_cachep, GFP_KERNEL); oi->redirect = NULL; oi->__upperdentry = NULL; oi->lower = NULL; Loading @@ -188,6 +188,7 @@ static void ovl_destroy_inode(struct inode *inode) struct ovl_inode *oi = OVL_I(inode); dput(oi->__upperdentry); kfree(oi->redirect); call_rcu(&inode->i_rcu, ovl_i_callback); } Loading
fs/overlayfs/util.c +4 −6 Original line number Diff line number Diff line Loading @@ -206,17 +206,15 @@ bool ovl_redirect_dir(struct super_block *sb) const char *ovl_dentry_get_redirect(struct dentry *dentry) { struct ovl_entry *oe = dentry->d_fsdata; return oe->redirect; return OVL_I(d_inode(dentry))->redirect; } void ovl_dentry_set_redirect(struct dentry *dentry, const char *redirect) { struct ovl_entry *oe = dentry->d_fsdata; struct ovl_inode *oi = OVL_I(d_inode(dentry)); kfree(oe->redirect); oe->redirect = redirect; kfree(oi->redirect); oi->redirect = redirect; } void ovl_inode_init(struct inode *inode, struct dentry *upperdentry, Loading