[PATCH v2] erofs-utils: lib: fix fd leak in erofs_metamgr_init()
Deepak Pathik <[email protected]>
| Newsgroups | org.ozlabs.lists.linux-erofs |
|---|---|
| Message-ID | <[email protected]> |
In erofs_metamgr_init(), erofs_tmpfile() returns a file descriptor stored in m2gr->vf.fd. If the subsequent erofs_buffer_init() call fails, the function returns -ENOMEM without closing this file descriptor. The caller erofs_metadata_init() handles this failure at err_free, which only frees the m2gr struct. The fd is therefore leaked with no remaining reference to close it. The success path correctly cleans up via erofs_metamgr_exit(), which calls erofs_io_close(&m2gr->vf). Mirror that behaviour on the error path by closing the fd before returning. Signed-off-by: Deepak Pathik <[email protected]> --- v2: use erofs_io_close() instead of raw close(); rebased on latest upstream/dev lib/metabox.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/metabox.c b/lib/metabox.c index d5ce9e3..86a7083 100644 --- a/lib/metabox.c +++ b/lib/metabox.c @@ -32,8 +32,10 @@ static int erofs_metamgr_init(struct erofs_sb_info *sbi, m2gr->vf = (struct erofs_vfile){ .fd = ret }; m2gr->bmgr = erofs_buffer_init(sbi, 0, &m2gr->vf); - if (!m2gr->bmgr) +if (!m2gr->bmgr) { +erofs_io_close(&m2gr->vf); return -ENOMEM; +} return 0; } -- 2.53.0