summaryrefslogtreecommitdiff
path: root/fs/overlayfs/file.c
diff options
context:
space:
mode:
authorAmir Goldstein <amir73il@gmail.com>2024-09-27 13:54:23 +0200
committerLinus Torvalds <torvalds@linux-foundation.org>2024-09-27 12:38:47 -0700
commit0c33037c825e47f64f426999db7192604e6d3188 (patch)
treefe1643fe3d6162d42c7883c812121d9a56c6a38f /fs/overlayfs/file.c
parent34e1a5d43c5deec563b94f3330b690dde9d1de53 (diff)
downloadlinux-0c33037c825e47f64f426999db7192604e6d3188.tar.gz
linux-0c33037c825e47f64f426999db7192604e6d3188.tar.bz2
linux-0c33037c825e47f64f426999db7192604e6d3188.zip
ovl: fix file leak in ovl_real_fdget_meta()
ovl_open_realfile() is wrongly called twice after conversion to new struct fd. Fixes: 88a2f6468d01 ("struct fd: representation change") Reported-by: syzbot+d9efec94dcbfa0de1c07@syzkaller.appspotmail.com Signed-off-by: Amir Goldstein <amir73il@gmail.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'fs/overlayfs/file.c')
-rw-r--r--fs/overlayfs/file.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/overlayfs/file.c b/fs/overlayfs/file.c
index 2b7a5a3a7a2f..4504493b20be 100644
--- a/fs/overlayfs/file.c
+++ b/fs/overlayfs/file.c
@@ -117,7 +117,7 @@ static int ovl_real_fdget_meta(const struct file *file, struct fd *real,
struct file *f = ovl_open_realfile(file, &realpath);
if (IS_ERR(f))
return PTR_ERR(f);
- real->word = (unsigned long)ovl_open_realfile(file, &realpath) | FDPUT_FPUT;
+ real->word = (unsigned long)f | FDPUT_FPUT;
return 0;
}