lkml.org 
[lkml]   [2010]   [Oct]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH] staging: speakup: fix leaks of sysfs groups
    Date
    speakup_kobj_init() and speakup_kobj_exit() didn't remove
    i18n_attr_group and main_attr_group sysfs groups.

    Signed-off-by: Vasiliy Kulikov <segooon@gmail.com>
    ---
    drivers/staging/speakup/kobjects.c | 18 ++++++++++++++----
    1 files changed, 14 insertions(+), 4 deletions(-)

    diff --git a/drivers/staging/speakup/kobjects.c b/drivers/staging/speakup/kobjects.c
    index e12b0e7..cc79f9e 100644
    --- a/drivers/staging/speakup/kobjects.c
    +++ b/drivers/staging/speakup/kobjects.c
    @@ -989,24 +989,34 @@ int speakup_kobj_init(void)

    speakup_kobj = kobject_create_and_add("speakup", accessibility_kobj);
    if (!speakup_kobj) {
    - kobject_put(accessibility_kobj);
    - return -ENOMEM;
    + retval = -ENOMEM;
    + goto err_acc;
    }

    /* Create the files associated with this kobject */
    retval = sysfs_create_group(speakup_kobj, &main_attr_group);
    if (retval)
    - speakup_kobj_exit();
    + goto err_speakup;

    retval = sysfs_create_group(speakup_kobj, &i18n_attr_group);
    if (retval)
    - speakup_kobj_exit();
    + goto err_group;
    +
    + return 0;

    +err_group:
    + sysfs_remove_group(speakup_kobj, &main_attr_group);
    +err_speakup:
    + kobject_put(speakup_kobj);
    +err_acc:
    + kobject_put(accessibility_kobj);
    return retval;
    }

    void speakup_kobj_exit(void)
    {
    + sysfs_remove_group(speakup_kobj, &i18n_attr_group);
    + sysfs_remove_group(speakup_kobj, &main_attr_group);
    kobject_put(speakup_kobj);
    kobject_put(accessibility_kobj);
    }
    --
    1.7.0.4


    \
     
     \ /
      Last update: 2010-10-17 16:55    [W:0.023 / U:32.560 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site