lkml.org 
[lkml]   [2024]   [Mar]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v2 3/4] perf: Remove perf_swevent_get_recursion_context() from perf_pending_task().
    Date
    perf_swevent_get_recursion_context() is supposed to avoid recursion.
    This requires to remain on the same CPU in order to decrement/ increment
    the same counter. This is done by using preempt_disable(). Having
    preemption disabled while sending a signal leads to locking problems on
    PREEMPT_RT because sighand, a spinlock_t, becomes a sleeping lock.

    This callback runs in task context and currently delivers only a signal
    to "itself". Any kind of recusrion protection in this context is not
    required.

    Remove recursion protection in perf_pending_task().

    Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    ---
    kernel/events/core.c | 12 ------------
    1 file changed, 12 deletions(-)

    diff --git a/kernel/events/core.c b/kernel/events/core.c
    index e9926baaa1587..806514d76d8dc 100644
    --- a/kernel/events/core.c
    +++ b/kernel/events/core.c
    @@ -6785,14 +6785,6 @@ static void perf_pending_irq(struct irq_work *entry)
    static void perf_pending_task(struct callback_head *head)
    {
    struct perf_event *event = container_of(head, struct perf_event, pending_task);
    - int rctx;
    -
    - /*
    - * If we 'fail' here, that's OK, it means recursion is already disabled
    - * and we won't recurse 'further'.
    - */
    - preempt_disable_notrace();
    - rctx = perf_swevent_get_recursion_context();

    if (event->pending_work) {
    event->pending_work = 0;
    @@ -6800,10 +6792,6 @@ static void perf_pending_task(struct callback_head *head)
    local_dec(&event->ctx->nr_pending);
    }

    - if (rctx >= 0)
    - perf_swevent_put_recursion_context(rctx);
    - preempt_enable_notrace();
    -
    put_event(event);
    }

    --
    2.43.0

    \
     
     \ /
      Last update: 2024-05-27 15:45    [W:7.027 / U:0.336 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site