Skip to content

Commit

Permalink
dmaengine: idxd: Add missing cleanups in cleanup internals
Browse files Browse the repository at this point in the history
The idxd_cleanup_internals() function only decreases the reference count
of groups, engines, and wqs but is missing the step to release memory
resources.

To fix this, use the cleanup helper to properly release the memory
resources.

Fixes: ddf742d ("dmaengine: idxd: Add missing cleanup for early error out in probe call")
Cc: stable@vger.kernel.org
Signed-off-by: Shuai Xue <xueshuai@linux.alibaba.com>
Reviewed-by: Fenghua Yu <fenghuay@nvidia.com>
Reviewed-by: Dave Jiang <dave.jiang@intel.com>
Link: https://lore.kernel.org/r/20250404120217.48772-6-xueshuai@linux.alibaba.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
  • Loading branch information
Shuai Xue authored and Vinod Koul committed May 14, 2025
1 parent 61259fb commit 61d6515
Showing 1 changed file with 3 additions and 8 deletions.
11 changes: 3 additions & 8 deletions drivers/dma/idxd/init.c
Original file line number Diff line number Diff line change
Expand Up @@ -407,14 +407,9 @@ static int idxd_setup_groups(struct idxd_device *idxd)

static void idxd_cleanup_internals(struct idxd_device *idxd)
{
int i;

for (i = 0; i < idxd->max_groups; i++)
put_device(group_confdev(idxd->groups[i]));
for (i = 0; i < idxd->max_engines; i++)
put_device(engine_confdev(idxd->engines[i]));
for (i = 0; i < idxd->max_wqs; i++)
put_device(wq_confdev(idxd->wqs[i]));
idxd_clean_groups(idxd);
idxd_clean_engines(idxd);
idxd_clean_wqs(idxd);
destroy_workqueue(idxd->wq);
}

Expand Down

0 comments on commit 61d6515

Please sign in to comment.