mirror of
https://github.com/torvalds/linux.git
synced 2026-03-08 06:04:44 +01:00
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: 2e7c6feb4e ("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>
This commit is contained in:
parent
193120dddd
commit
665077d78d
1 changed files with 5 additions and 2 deletions
|
|
@ -292,8 +292,11 @@ static int pds_vfio_dirty_enable(struct pds_vfio_pci_device *pds_vfio,
|
|||
len = num_ranges * sizeof(*region_info);
|
||||
|
||||
node = interval_tree_iter_first(ranges, 0, ULONG_MAX);
|
||||
if (!node)
|
||||
return -EINVAL;
|
||||
if (!node) {
|
||||
err = -EINVAL;
|
||||
goto out_free_region_info;
|
||||
}
|
||||
|
||||
for (int i = 0; i < num_ranges; i++) {
|
||||
struct pds_lm_dirty_region_info *ri = ®ion_info[i];
|
||||
u64 region_size = node->last - node->start + 1;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue