Re: [PATCH 1/2] handle error path in edac_mc_sysfs_init()

From: Borislav Petkov
Date: Thu Oct 25 2012 - 11:55:57 EST


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@xxxxxxxxx>
> ---
> 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.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/