Skip to content

Commit 665077d

Browse files
GoodLuck612awilliam
authored andcommitted
vfio/pds: Fix memory leak in pds_vfio_dirty_enable()
pds_vfio_dirty_enable() allocates memory for region_info. If interval_tree_iter_first() returns NULL, the function returns -EINVAL immediately without freeing the allocated memory, causing a memory leak. Fix this by jumping to the out_free_region_info label to ensure region_info is freed. Fixes: 2e7c6fe ("vfio/pds: Add multi-region support") Signed-off-by: Zilin Guan <zilin@seu.edu.cn> Link: https://lore.kernel.org/r/20251225143150.1117366-1-zilin@seu.edu.cn Signed-off-by: Alex Williamson <alex@shazbot.org>
1 parent 193120d commit 665077d

1 file changed

Lines changed: 5 additions & 2 deletions

File tree

drivers/vfio/pci/pds/dirty.c

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -292,8 +292,11 @@ static int pds_vfio_dirty_enable(struct pds_vfio_pci_device *pds_vfio,
292292
len = num_ranges * sizeof(*region_info);
293293

294294
node = interval_tree_iter_first(ranges, 0, ULONG_MAX);
295-
if (!node)
296-
return -EINVAL;
295+
if (!node) {
296+
err = -EINVAL;
297+
goto out_free_region_info;
298+
}
299+
297300
for (int i = 0; i < num_ranges; i++) {
298301
struct pds_lm_dirty_region_info *ri = &region_info[i];
299302
u64 region_size = node->last - node->start + 1;

0 commit comments

Comments
 (0)