On Wed, May 17, 2023 at 08:25:18PM +0300, Vladislav Efanov wrote: > Function dwc3_qcom_probe() allocates memory for resource structure > which is pointed by parent_res pointer. This memory is not > freed. This leads to memory leak. Use stack memory to prevent > memory leak. > > Found by Linux Verification Center (linuxtesting.org) with SVACE. > > Fixes: 2bc02355f8ba ("usb: dwc3: qcom: Add support for booting with ACPI") > Signed-off-by: Vladislav Efanov <VEfanov@xxxxxxxxx> Acked-by: Shawn Guo <shawn.guo@xxxxxxxxxx> > --- > drivers/usb/dwc3/dwc3-qcom.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/drivers/usb/dwc3/dwc3-qcom.c b/drivers/usb/dwc3/dwc3-qcom.c > index 959fc925ca7c..f52241883694 100644 > --- a/drivers/usb/dwc3/dwc3-qcom.c > +++ b/drivers/usb/dwc3/dwc3-qcom.c > @@ -791,6 +791,7 @@ static int dwc3_qcom_probe(struct platform_device *pdev) > struct device *dev = &pdev->dev; > struct dwc3_qcom *qcom; > struct resource *res, *parent_res = NULL; > + struct resource local_res; > int ret, i; > bool ignore_pipe_clk; > bool wakeup_source; > @@ -842,9 +843,8 @@ static int dwc3_qcom_probe(struct platform_device *pdev) > if (np) { > parent_res = res; > } else { > - parent_res = kmemdup(res, sizeof(struct resource), GFP_KERNEL); > - if (!parent_res) > - return -ENOMEM; > + memcpy(&local_res, res, sizeof(struct resource)); > + parent_res = &local_res; > > parent_res->start = res->start + > qcom->acpi_pdata->qscratch_base_offset; > -- > 2.34.1 >