]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
dmaengine: idxd: Add missing cleanups in cleanup internals
authorShuai Xue <xueshuai@linux.alibaba.com>
Fri, 4 Apr 2025 12:02:13 +0000 (20:02 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 22 May 2025 12:12:23 +0000 (14:12 +0200)
commit 61d651572b6c4fe50c7b39a390760f3a910c7ccf upstream.

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: ddf742d4f3f1 ("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>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/dma/idxd/init.c

index 9731ca021faf8ae6f791ccb0b6075c848b58e361..ba211ec108197082934746fc3d295cfcf5911095 100644 (file)
@@ -397,14 +397,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);
 }