lkml.org 
[lkml]   [2012]   [Jun]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH V6 02/13] perf: Avoid race between cpu hotplug and installing event
    Date
    From: "Yan, Zheng" <zheng.z.yan@intel.com>

    perf_event_open requires the cpu on which to install event is online,
    but the cpu can go offline after perf_event_open checks that. Add
    get_online_cpus()/put_online_cpus() pair to avoid the race.

    Signed-off-by: Zheng Yan <zheng.z.yan@intel.com>
    ---
    kernel/events/core.c | 5 +++++
    1 files changed, 5 insertions(+), 0 deletions(-)

    diff --git a/kernel/events/core.c b/kernel/events/core.c
    index f85c015..d71a2d6 100644
    --- a/kernel/events/core.c
    +++ b/kernel/events/core.c
    @@ -6248,6 +6248,8 @@ SYSCALL_DEFINE5(perf_event_open,
    }
    }

    + get_online_cpus();
    +
    event = perf_event_alloc(&attr, cpu, task, group_leader, NULL,
    NULL, NULL);
    if (IS_ERR(event)) {
    @@ -6387,6 +6389,8 @@ SYSCALL_DEFINE5(perf_event_open,
    perf_unpin_context(ctx);
    mutex_unlock(&ctx->mutex);

    + put_online_cpus();
    +
    event->owner = current;

    mutex_lock(&current->perf_event_mutex);
    @@ -6415,6 +6419,7 @@ err_context:
    err_alloc:
    free_event(event);
    err_task:
    + put_online_cpus();
    if (task)
    put_task_struct(task);
    err_group_fd:
    --
    1.7.6.5


    \
     
     \ /
      Last update: 2012-06-15 09:42    [W:0.024 / U:30.324 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site