mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-30 08:56:45 +07:00
pseries/iommu: Add missing kfree
At this point, window has not been stored anywhere, so it has to be freed before leaving the function. A simplified version of the semantic match that finds this problem is as follows: (http://coccinelle.lip6.fr/) // <smpl> @exists@ local idexpression x; statement S,S1; expression E; identifier fl; expression *ptr != NULL; @@ x = \(kmalloc\|kzalloc\|kcalloc\)(...); ... if (x == NULL) S <... when != x when != if (...) { <+...kfree(x)...+> } when any when != true x == NULL x->fl ...> ( if (x == NULL) S1 | if (...) { ... when != x when forall ( return \(0\|<+...x...+>\|ptr\); | * return ...; ) } ) // </smpl> Signed-off-by: Julia Lawall <julia@diku.dk> Acked-by: Nishanth Aravamudan <nacc@us.ibm.com> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
This commit is contained in:
parent
6dece0eb69
commit
7a19081fc2
@ -939,14 +939,14 @@ static u64 enable_ddw(struct pci_dev *dev, struct device_node *pdn)
|
||||
if (ret) {
|
||||
dev_info(&dev->dev, "failed to map direct window for %s: %d\n",
|
||||
dn->full_name, ret);
|
||||
goto out_clear_window;
|
||||
goto out_free_window;
|
||||
}
|
||||
|
||||
ret = prom_add_property(pdn, win64);
|
||||
if (ret) {
|
||||
dev_err(&dev->dev, "unable to add dma window property for %s: %d",
|
||||
pdn->full_name, ret);
|
||||
goto out_clear_window;
|
||||
goto out_free_window;
|
||||
}
|
||||
|
||||
window->device = pdn;
|
||||
@ -958,6 +958,9 @@ static u64 enable_ddw(struct pci_dev *dev, struct device_node *pdn)
|
||||
dma_addr = of_read_number(&create.addr_hi, 2);
|
||||
goto out_unlock;
|
||||
|
||||
out_free_window:
|
||||
kfree(window);
|
||||
|
||||
out_clear_window:
|
||||
remove_ddw(pdn);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user