mirror of
https://github.com/torvalds/linux.git
synced 2026-05-25 15:41:52 +02:00
iommu/amd: Fix pci_segment memleak in alloc_pci_segment()
Fix a memory leak of struct amd_iommu_pci_segment in alloc_pci_segment() when system memory (or contiguous memory) is insufficient. Fixes:04230c1199("iommu/amd: Introduce per PCI segment device table") Fixes:eda797a277("iommu/amd: Introduce per PCI segment rlookup table") Fixes:99fc4ac3d2("iommu/amd: Introduce per PCI segment alias_table") Cc: stable@vger.kernel.org Signed-off-by: Jinhui Guo <guojinhui.liam@bytedance.com> Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
This commit is contained in:
parent
d1e281f832
commit
75ba146c26
|
|
@ -1710,13 +1710,22 @@ static struct amd_iommu_pci_seg *__init alloc_pci_segment(u16 id,
|
|||
list_add_tail(&pci_seg->list, &amd_iommu_pci_seg_list);
|
||||
|
||||
if (alloc_dev_table(pci_seg))
|
||||
return NULL;
|
||||
goto err_free_pci_seg;
|
||||
if (alloc_alias_table(pci_seg))
|
||||
return NULL;
|
||||
goto err_free_dev_table;
|
||||
if (alloc_rlookup_table(pci_seg))
|
||||
return NULL;
|
||||
goto err_free_alias_table;
|
||||
|
||||
return pci_seg;
|
||||
|
||||
err_free_alias_table:
|
||||
free_alias_table(pci_seg);
|
||||
err_free_dev_table:
|
||||
free_dev_table(pci_seg);
|
||||
err_free_pci_seg:
|
||||
list_del(&pci_seg->list);
|
||||
kfree(pci_seg);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static struct amd_iommu_pci_seg *__init get_pci_segment(u16 id,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user