diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2023-10-02 04:36:13 +0200 |
---|---|---|
committer | Amir Goldstein <amir73il@gmail.com> | 2023-10-02 16:44:06 +0200 |
commit | d9e8319a6e3538b430f692b5625a76ffa0758adc (patch) | |
tree | 900a5afab1d967dcd4249d85b3d0a1989de5e6be /fs/overlayfs | |
parent | ovl: fix file reference leak when submitting aio (diff) | |
download | linux-d9e8319a6e3538b430f692b5625a76ffa0758adc.tar.xz linux-d9e8319a6e3538b430f692b5625a76ffa0758adc.zip |
ovl: move freeing ovl_entry past rcu delay
... into ->free_inode(), that is.
Fixes: 0af950f57fef "ovl: move ovl_entry into ovl_inode"
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Diffstat (limited to 'fs/overlayfs')
-rw-r--r-- | fs/overlayfs/super.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/overlayfs/super.c b/fs/overlayfs/super.c index def266b5e2a3..f09184b865ec 100644 --- a/fs/overlayfs/super.c +++ b/fs/overlayfs/super.c @@ -167,6 +167,7 @@ static void ovl_free_inode(struct inode *inode) struct ovl_inode *oi = OVL_I(inode); kfree(oi->redirect); + kfree(oi->oe); mutex_destroy(&oi->lock); kmem_cache_free(ovl_inode_cachep, oi); } @@ -176,7 +177,7 @@ static void ovl_destroy_inode(struct inode *inode) struct ovl_inode *oi = OVL_I(inode); dput(oi->__upperdentry); - ovl_free_entry(oi->oe); + ovl_stack_put(ovl_lowerstack(oi->oe), ovl_numlower(oi->oe)); if (S_ISDIR(inode->i_mode)) ovl_dir_cache_free(inode); else |