Message ID | 20191121194043.22378-1-navid.emamdoost@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | EDAC: Fix memory leak in i5100_init_one | expand |
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 >
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); bail_disable_ch1:
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(-)