* [PATCH 1/2] handle error path in edac_mc_sysfs_init() @ 2012-10-25 15:42 Denis Kirjanov 2012-10-25 15:56 ` Borislav Petkov 0 siblings, 1 reply; 5+ messages in thread From: Denis Kirjanov @ 2012-10-25 15:42 UTC (permalink / raw) To: dougthompson; +Cc: linux-edac, linux-kernel, kirjanov Handle errors on edac_mc_sysfs_init()'s error path Signed-off-by: Denis Kirjanov <kirjanov@gmail.com> --- drivers/edac/edac_mc_sysfs.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/drivers/edac/edac_mc_sysfs.c b/drivers/edac/edac_mc_sysfs.c index ed0bc07..ea34ece 100644 --- a/drivers/edac/edac_mc_sysfs.c +++ b/drivers/edac/edac_mc_sysfs.c @@ -1124,11 +1124,16 @@ int __init edac_mc_sysfs_init(void) edac_subsys = edac_get_sysfs_subsys(); if (edac_subsys == NULL) { edac_dbg(1, "no edac_subsys\n"); - return -EINVAL; + err = -EINVAL; + goto out; } mci_pdev = kzalloc(sizeof(*mci_pdev), GFP_KERNEL); - + if (!mci_pdev) { + err = -ENOMEM; + goto out_put_sysfs; + } + mci_pdev->bus = edac_subsys; mci_pdev->type = &mc_attr_type; device_initialize(mci_pdev); @@ -1141,6 +1146,11 @@ int __init edac_mc_sysfs_init(void) edac_dbg(0, "device %s created\n", dev_name(mci_pdev)); return 0; + +out_put_sysfs: + edac_put_sysfs_subsys(); +out: + return err; } void __exit edac_mc_sysfs_exit(void) -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 1/2] handle error path in edac_mc_sysfs_init() 2012-10-25 15:42 [PATCH 1/2] handle error path in edac_mc_sysfs_init() Denis Kirjanov @ 2012-10-25 15:56 ` Borislav Petkov 2012-10-25 15:57 ` Borislav Petkov 0 siblings, 1 reply; 5+ messages in thread From: Borislav Petkov @ 2012-10-25 15:56 UTC (permalink / raw) To: Denis Kirjanov; +Cc: dougthompson, linux-edac, linux-kernel On Thu, Oct 25, 2012 at 07:42:58PM +0400, Denis Kirjanov wrote: > Handle errors on edac_mc_sysfs_init()'s error path > > Signed-off-by: Denis Kirjanov <kirjanov@gmail.com> > --- > drivers/edac/edac_mc_sysfs.c | 14 ++++++++++++-- > 1 file changed, 12 insertions(+), 2 deletions(-) > > diff --git a/drivers/edac/edac_mc_sysfs.c b/drivers/edac/edac_mc_sysfs.c > index ed0bc07..ea34ece 100644 > --- a/drivers/edac/edac_mc_sysfs.c > +++ b/drivers/edac/edac_mc_sysfs.c > @@ -1124,11 +1124,16 @@ int __init edac_mc_sysfs_init(void) > edac_subsys = edac_get_sysfs_subsys(); > if (edac_subsys == NULL) { > edac_dbg(1, "no edac_subsys\n"); > - return -EINVAL; > + err = -EINVAL; > + goto out; > } > > mci_pdev = kzalloc(sizeof(*mci_pdev), GFP_KERNEL); > - > + if (!mci_pdev) { > + err = -ENOMEM; > + goto out_put_sysfs; > + } > + > mci_pdev->bus = edac_subsys; > mci_pdev->type = &mc_attr_type; > device_initialize(mci_pdev); > @@ -1141,6 +1146,11 @@ int __init edac_mc_sysfs_init(void) > edac_dbg(0, "device %s created\n", dev_name(mci_pdev)); Thanks for doing this. However, from looking at this function further, it is still f*cked up - the error path after device_add needs handling too, i.e. adding another label: out_device_add: kfree(mci_pdev); > +out_put_sysfs: > + edac_put_sysfs_subsys(); > +out: > + return err; to which you can goto to after device_add fails. Would you be willing to fix that too, while you're at it? Btw, I can totally understand if you say no - I'll take care of it myself instead then :-). Thanks. -- Regards/Gruss, Boris. ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 1/2] handle error path in edac_mc_sysfs_init() 2012-10-25 15:56 ` Borislav Petkov @ 2012-10-25 15:57 ` Borislav Petkov 2012-10-25 16:36 ` Borislav Petkov 0 siblings, 1 reply; 5+ messages in thread From: Borislav Petkov @ 2012-10-25 15:57 UTC (permalink / raw) To: Denis Kirjanov, dougthompson, linux-edac, linux-kernel On Thu, Oct 25, 2012 at 05:56:06PM +0200, Borislav Petkov wrote: > Would you be willing to fix that too, while you're at it? Btw, I can > totally understand if you say no - I'll take care of it myself instead > then :-). Ah, maybe I should look at the second patch before replying to this one. Nevermind, I'll merge the two into one and test. Thanks. -- Regards/Gruss, Boris. ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 1/2] handle error path in edac_mc_sysfs_init() 2012-10-25 15:57 ` Borislav Petkov @ 2012-10-25 16:36 ` Borislav Petkov 2012-10-25 16:48 ` Mauro Carvalho Chehab 0 siblings, 1 reply; 5+ messages in thread From: Borislav Petkov @ 2012-10-25 16:36 UTC (permalink / raw) To: Denis Kirjanov; +Cc: Borislav Petkov, linux-edac, linux-kernel (remove Doug's email from CC since it bounces) On Thu, Oct 25, 2012 at 05:57:29PM +0200, Borislav Petkov wrote: > On Thu, Oct 25, 2012 at 05:56:06PM +0200, Borislav Petkov wrote: > > Would you be willing to fix that too, while you're at it? Btw, I can > > totally understand if you say no - I'll take care of it myself instead > > then :-). > > Ah, maybe I should look at the second patch before replying to this one. > Nevermind, I'll merge the two into one and test. Ok, here's the final version I'm sending upstream soon: -- >From a8373ecc0c26d8afafd0d2e88f96756e26b7f3ee Mon Sep 17 00:00:00 2001 From: Denis Kirjanov <kirjanov@gmail.com> Date: Thu, 25 Oct 2012 19:42:58 +0400 Subject: [PATCH] EDAC: Handle error path in edac_mc_sysfs_init() properly Make sure proper deregistration happens on all error paths in edac_mc_sysfs_init. Signed-off-by: Denis Kirjanov <kirjanov@gmail.com> [ Boris: cleanup and concretize commit message ] Signed-off-by: Borislav Petkov <bp@alien8.de> --- drivers/edac/edac_mc_sysfs.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/drivers/edac/edac_mc_sysfs.c b/drivers/edac/edac_mc_sysfs.c index 52813b8b0f5f..de2df92f9c77 100644 --- a/drivers/edac/edac_mc_sysfs.c +++ b/drivers/edac/edac_mc_sysfs.c @@ -1126,10 +1126,15 @@ int __init edac_mc_sysfs_init(void) edac_subsys = edac_get_sysfs_subsys(); if (edac_subsys == NULL) { edac_dbg(1, "no edac_subsys\n"); - return -EINVAL; + err = -EINVAL; + goto out; } mci_pdev = kzalloc(sizeof(*mci_pdev), GFP_KERNEL); + if (!mci_pdev) { + err = -ENOMEM; + goto out_put_sysfs; + } mci_pdev->bus = edac_subsys; mci_pdev->type = &mc_attr_type; @@ -1138,11 +1143,18 @@ int __init edac_mc_sysfs_init(void) err = device_add(mci_pdev); if (err < 0) - return err; + goto out_dev_free; edac_dbg(0, "device %s created\n", dev_name(mci_pdev)); return 0; + + out_dev_free: + kfree(mci_pdev); + out_put_sysfs: + edac_put_sysfs_subsys(); + out: + return err; } void __exit edac_mc_sysfs_exit(void) @@ -1150,4 +1162,5 @@ void __exit edac_mc_sysfs_exit(void) put_device(mci_pdev); device_del(mci_pdev); edac_put_sysfs_subsys(); + kfree(mci_pdev); } -- 1.8.0 -- Regards/Gruss, Boris. Advanced Micro Devices GmbH Einsteinring 24, 85609 Dornach GM: Alberto Bozzo Reg: Dornach, Landkreis Muenchen HRB Nr. 43632 WEEE Registernr: 129 19551 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 1/2] handle error path in edac_mc_sysfs_init() 2012-10-25 16:36 ` Borislav Petkov @ 2012-10-25 16:48 ` Mauro Carvalho Chehab 0 siblings, 0 replies; 5+ messages in thread From: Mauro Carvalho Chehab @ 2012-10-25 16:48 UTC (permalink / raw) To: Borislav Petkov; +Cc: Denis Kirjanov, Borislav Petkov, linux-edac, linux-kernel Em Thu, 25 Oct 2012 18:36:53 +0200 Borislav Petkov <bp@amd64.org> escreveu: > (remove Doug's email from CC since it bounces) > > On Thu, Oct 25, 2012 at 05:57:29PM +0200, Borislav Petkov wrote: > > On Thu, Oct 25, 2012 at 05:56:06PM +0200, Borislav Petkov wrote: > > > Would you be willing to fix that too, while you're at it? Btw, I can > > > totally understand if you say no - I'll take care of it myself instead > > > then :-). > > > > Ah, maybe I should look at the second patch before replying to this one. > > Nevermind, I'll merge the two into one and test. > > Ok, here's the final version I'm sending upstream soon: > > -- > From a8373ecc0c26d8afafd0d2e88f96756e26b7f3ee Mon Sep 17 00:00:00 2001 > From: Denis Kirjanov <kirjanov@gmail.com> > Date: Thu, 25 Oct 2012 19:42:58 +0400 > Subject: [PATCH] EDAC: Handle error path in edac_mc_sysfs_init() properly > > Make sure proper deregistration happens on all error paths in > edac_mc_sysfs_init. > > Signed-off-by: Denis Kirjanov <kirjanov@gmail.com> > [ Boris: cleanup and concretize commit message ] > Signed-off-by: Borislav Petkov <bp@alien8.de> Acked-by: Mauro Carvalho Chehab <mchehab@redhat.com> > --- > drivers/edac/edac_mc_sysfs.c | 17 +++++++++++++++-- > 1 file changed, 15 insertions(+), 2 deletions(-) > > diff --git a/drivers/edac/edac_mc_sysfs.c b/drivers/edac/edac_mc_sysfs.c > index 52813b8b0f5f..de2df92f9c77 100644 > --- a/drivers/edac/edac_mc_sysfs.c > +++ b/drivers/edac/edac_mc_sysfs.c > @@ -1126,10 +1126,15 @@ int __init edac_mc_sysfs_init(void) > edac_subsys = edac_get_sysfs_subsys(); > if (edac_subsys == NULL) { > edac_dbg(1, "no edac_subsys\n"); > - return -EINVAL; > + err = -EINVAL; > + goto out; > } > > mci_pdev = kzalloc(sizeof(*mci_pdev), GFP_KERNEL); > + if (!mci_pdev) { > + err = -ENOMEM; > + goto out_put_sysfs; > + } > > mci_pdev->bus = edac_subsys; > mci_pdev->type = &mc_attr_type; > @@ -1138,11 +1143,18 @@ int __init edac_mc_sysfs_init(void) > > err = device_add(mci_pdev); > if (err < 0) > - return err; > + goto out_dev_free; > > edac_dbg(0, "device %s created\n", dev_name(mci_pdev)); > > return 0; > + > + out_dev_free: > + kfree(mci_pdev); > + out_put_sysfs: > + edac_put_sysfs_subsys(); > + out: > + return err; > } > > void __exit edac_mc_sysfs_exit(void) > @@ -1150,4 +1162,5 @@ void __exit edac_mc_sysfs_exit(void) > put_device(mci_pdev); > device_del(mci_pdev); > edac_put_sysfs_subsys(); > + kfree(mci_pdev); > } -- Regards, Mauro ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2012-10-25 16:49 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2012-10-25 15:42 [PATCH 1/2] handle error path in edac_mc_sysfs_init() Denis Kirjanov 2012-10-25 15:56 ` Borislav Petkov 2012-10-25 15:57 ` Borislav Petkov 2012-10-25 16:36 ` Borislav Petkov 2012-10-25 16:48 ` Mauro Carvalho Chehab
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox