From: Darrick J. Wong Date: Tue, 9 Jun 2026 16:49:22 +0000 (-0700) Subject: xfs_scrub: don't leak phase 5 scan items after a failed workqueue_add X-Git-Tag: v7.1.0~22 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=41530a0981a17ff84912a4454d7c2b6308a06035;p=xfsprogs-dev.git xfs_scrub: don't leak phase 5 scan items after a failed workqueue_add Codex points out that queue_metapath_scan and queue_fs_scan fail to free the allocated items if they are not consumed by workqueue_add(). Cc: # v6.9.0 Fixes: 8fb4b471322e65 ("xfs_scrub: use multiple threads to run in-kernel metadata scrubs that scan inodes") Signed-off-by: "Darrick J. Wong" Reviewed-by: Christoph Hellwig --- diff --git a/scrub/phase5.c b/scrub/phase5.c index 329d208d..fd1b7033 100644 --- a/scrub/phase5.c +++ b/scrub/phase5.c @@ -687,8 +687,10 @@ queue_fs_scan( item->abortedp = abortedp; ret = -workqueue_add(wq, fs_scan_worker, nr, item); - if (ret) + if (ret) { str_liberror(ctx, ret, _("queuing fs scan work")); + free(item); + } return ret; } @@ -764,8 +766,10 @@ queue_metapath_scan( item->abortedp = abortedp; ret = -workqueue_add(wq, fs_scan_worker, 0, item); - if (ret) + if (ret) { str_liberror(ctx, ret, _("queuing metapath scan work")); + free(item); + } return ret; }