lkml.org 
[lkml]   [2011]   [Jun]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[72/89] oprofile: Free potentially owned tasks in case of errors
    2.6.39-stable review patch.  If anyone has any objections, please let us know.

    ------------------

    From: Robert Richter <robert.richter@amd.com>

    commit 6ac6519b93065625119a347be1cbcc1b89edb773 upstream.

    After registering the task free notifier we possibly have tasks in our
    dying_tasks list. Free them after unregistering the notifier in case
    of an error.

    Signed-off-by: Robert Richter <robert.richter@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    drivers/oprofile/buffer_sync.c | 13 +++++++++----
    1 file changed, 9 insertions(+), 4 deletions(-)

    --- a/drivers/oprofile/buffer_sync.c
    +++ b/drivers/oprofile/buffer_sync.c
    @@ -141,6 +141,13 @@ static struct notifier_block module_load
    .notifier_call = module_load_notify,
    };

    +static void free_all_tasks(void)
    +{
    + /* make sure we don't leak task structs */
    + process_task_mortuary();
    + process_task_mortuary();
    +}
    +
    int sync_start(void)
    {
    int err;
    @@ -174,6 +181,7 @@ out3:
    profile_event_unregister(PROFILE_TASK_EXIT, &task_exit_nb);
    out2:
    task_handoff_unregister(&task_free_nb);
    + free_all_tasks();
    out1:
    free_cpumask_var(marked_cpus);
    goto out;
    @@ -192,10 +200,7 @@ void sync_stop(void)
    mutex_unlock(&buffer_mutex);
    flush_cpu_work();

    - /* make sure we don't leak task structs */
    - process_task_mortuary();
    - process_task_mortuary();
    -
    + free_all_tasks();
    free_cpumask_var(marked_cpus);
    }




    \
     
     \ /
      Last update: 2011-06-16 09:33    [W:0.024 / U:59.820 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site