All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yonghong Song <yhs@fb.com>
To: "Toke Høiland-Jørgensen" <toke@redhat.com>,
	"Satya Durga Srinivasu Prabhala" <quic_satyap@quicinc.com>,
	bpf@vger.kernel.org
Cc: ast@kernel.org, andrii@kernel.org, daniel@iogearbox.net,
	joannelkoong@gmail.com, brouer@redhat.com
Subject: Re: [PATCH] bpf: fix rq lock recursion issue
Date: Mon, 13 Jun 2022 09:35:32 -0700	[thread overview]
Message-ID: <fc16df47-df2b-ffa2-4e66-5a3dc92cb4db@fb.com> (raw)
In-Reply-To: <87r13s2a0j.fsf@toke.dk>



On 6/13/22 2:22 AM, Toke Høiland-Jørgensen wrote:
> !-------------------------------------------------------------------|
>    This Message Is From an External Sender
>    This message came from outside your organization.
> |-------------------------------------------------------------------!
> 
> Satya Durga Srinivasu Prabhala <quic_satyap@quicinc.com> writes:
> 
>> Below recursion is observed in a rare scenario where __schedule()
>> takes rq lock, at around same time task's affinity is being changed,
>> bpf function for tracing sched_switch calls migrate_enabled(),
>> checks for affinity change (cpus_ptr != cpus_mask) lands into
>> __set_cpus_allowed_ptr which tries acquire rq lock and causing the
>> recursion bug.
> 
> So this only affects tracing programs that attach to tasks that can have
> their affinity changed? Or do we need to review migrate_enable() vs
> preempt_enable() for networking hooks as well?

I think that changing from migrate_disable() to preempt_disable()
won't work from RT kernel. In fact, the original preempt_disable() to
migrate_disable() is triggered by RT kernel discussion.

As you mentioned, this is a very special case. Not sure whether we have
a good way to fix it or not. Is it possible we can check whether rq lock
is held or not under condition cpus_ptr != cpus_mask? If it is,
migrate_disable() (or a variant of it) should return an error code
to indicate it won't work?

> 
> -Toke
> 

  parent reply	other threads:[~2022-06-13 19:03 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-06-13  2:52 [PATCH] bpf: fix rq lock recursion issue Satya Durga Srinivasu Prabhala
2022-06-13  9:22 ` Toke Høiland-Jørgensen
2022-06-13 16:17   ` Satya Durga Srinivasu Prabhala
2022-06-13 16:35   ` Yonghong Song [this message]
2022-06-13 17:47     ` Satya Durga Srinivasu Prabhala
2022-06-13 21:01       ` Alexei Starovoitov
2022-06-13 21:35         ` Satya Durga Srinivasu Prabhala
2022-06-13 21:49           ` Alexei Starovoitov
2022-06-14  1:10             ` Satya Durga Srinivasu Prabhala
2022-06-14  6:09               ` Yonghong Song
2022-06-24  6:56                 ` Satya Durga Srinivasu Prabhala
2022-06-24 16:46                   ` Alexei Starovoitov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=fc16df47-df2b-ffa2-4e66-5a3dc92cb4db@fb.com \
    --to=yhs@fb.com \
    --cc=andrii@kernel.org \
    --cc=ast@kernel.org \
    --cc=bpf@vger.kernel.org \
    --cc=brouer@redhat.com \
    --cc=daniel@iogearbox.net \
    --cc=joannelkoong@gmail.com \
    --cc=quic_satyap@quicinc.com \
    --cc=toke@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.