IB/hfi1: Fix a memleak in init_credit_return
[ Upstream commit 809aa64ebff51eb170ee31a95f83b2d21efa32e2 ] When dma_alloc_coherent fails to allocate dd->cr_base[i].va, init_credit_return should deallocate dd->cr_base and dd->cr_base[i] that allocated before. Or those resources would be never freed and a memleak is triggered. Fixes: 7724105686e7 ("IB/hfi1: add driver files") Signed-off-by: Zhipeng Lu <alexious@zju.edu.cn> Link: https://lore.kernel.org/r/20240112085523.3731720-1-alexious@zju.edu.cn Acked-by: Dennis Dalessandro <dennis.dalessandro@cornelisnetworks.com> Signed-off-by: Leon Romanovsky <leon@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
92f22dbef1
commit
0a993be38c
1 changed files with 5 additions and 1 deletions
|
@ -2131,7 +2131,7 @@ int init_credit_return(struct hfi1_devdata *dd)
|
||||||
"Unable to allocate credit return DMA range for NUMA %d\n",
|
"Unable to allocate credit return DMA range for NUMA %d\n",
|
||||||
i);
|
i);
|
||||||
ret = -ENOMEM;
|
ret = -ENOMEM;
|
||||||
goto done;
|
goto free_cr_base;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
set_dev_node(&dd->pcidev->dev, dd->node);
|
set_dev_node(&dd->pcidev->dev, dd->node);
|
||||||
|
@ -2139,6 +2139,10 @@ int init_credit_return(struct hfi1_devdata *dd)
|
||||||
ret = 0;
|
ret = 0;
|
||||||
done:
|
done:
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
free_cr_base:
|
||||||
|
free_credit_return(dd);
|
||||||
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
void free_credit_return(struct hfi1_devdata *dd)
|
void free_credit_return(struct hfi1_devdata *dd)
|
||||||
|
|
Loading…
Add table
Reference in a new issue