Messages in this thread | | | From | Robert Richter <> | Subject | Re: [PATCH] EDAC: Fix memory leak in i5100_init_one | Date | Thu, 21 Nov 2019 20:39:57 +0000 |
| |
On 21.11.19 13:40:41, Navid Emamdoost wrote: > In the implementation of i5100_init_one(), the allocated mci is not > correctly released in cases of failure. The release via edac_mc_free() > should be reached by label bail_einj and subsequents. > > Fixes: 52608ba20546 ("i5100_edac: probe for device 19 function 0") > Signed-off-by: Navid Emamdoost <navid.emamdoost@gmail.com> > --- > drivers/edac/i5100_edac.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/edac/i5100_edac.c b/drivers/edac/i5100_edac.c > index 251f2b692785..710fabd5fba1 100644 > --- a/drivers/edac/i5100_edac.c > +++ b/drivers/edac/i5100_edac.c > @@ -1149,12 +1149,12 @@ static int i5100_init_one(struct pci_dev *pdev, const struct pci_device_id *id) > bail_scrub: > priv->scrub_enable = 0; > cancel_delayed_work_sync(&(priv->i5100_scrubbing)); > - edac_mc_free(mci); > > bail_disable_einj: > pci_disable_device(einj); > > bail_einj: > + edac_mc_free(mci); > pci_dev_put(einj);
The whole error path looks broken:
bail_disable_einj: may *not* call pci_disable_device().
bail_einj: may not call pci_dev_put()
i5100_setup_debugfs() may fail.
etc.
All needs to be fixed. Please review the error path.
Thanks,
-Robert
> > bail_disable_ch1: > -- > 2.17.1 >
| |