All of lore.kernel.org
 help / color / mirror / Atom feed
From: Puranjay Mohan <puranjay@kernel.org>
To: Alexei Starovoitov <alexei.starovoitov@gmail.com>
Cc: Alexei Starovoitov <ast@kernel.org>,
	Daniel Borkmann <daniel@iogearbox.net>,
	Andrii Nakryiko <andrii@kernel.org>,
	Martin KaFai Lau <martin.lau@linux.dev>,
	Eduard Zingerman <eddyz87@gmail.com>, Song Liu <song@kernel.org>,
	Yonghong Song <yonghong.song@linux.dev>,
	bpf <bpf@vger.kernel.org>,
	puranjay12@gmail.com
Subject: Re: [PATCH bpf-next 1/2] bpf: implement bpf_send_signal_pid/tgid() helpers
Date: Wed, 04 Sep 2024 13:23:23 +0000	[thread overview]
Message-ID: <mb61pjzfrsgc4.fsf@kernel.org> (raw)
In-Reply-To: <CAADnVQKXY5E11gpng=0P_YFLJZh+nmiJDLOrtv2hftvxinukFQ@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 2399 bytes --]

Alexei Starovoitov <alexei.starovoitov@gmail.com> writes:

Hi,
Sorry for the delay on this.

> On Wed, Jul 24, 2024 at 4:40 AM Puranjay Mohan <puranjay@kernel.org> wrote:
>>
>> Implement bpf_send_signal_pid and bpf_send_signal_tgid helpers which are
>> similar to bpf_send_signal_thread and bpf_send_signal helpers
>> respectively but can be used to send signals to other threads and
>> processes.
>
> Thanks for working on this!
> But it needs more homework.
>
>>  #define ___BPF_FUNC_MAPPER(FN, ctx...)                 \
>>         FN(unspec, 0, ##ctx)                            \
>> @@ -6006,6 +6041,8 @@ union bpf_attr {
>>         FN(user_ringbuf_drain, 209, ##ctx)              \
>>         FN(cgrp_storage_get, 210, ##ctx)                \
>>         FN(cgrp_storage_delete, 211, ##ctx)             \
>> +       FN(send_signal_pid, 212, ##ctx)         \
>> +       FN(send_signal_tgid, 213, ##ctx)                \
>
> We stopped adding helpers long ago.
> They need to be kfuncs.
>
>>         /* */
>>
>>  /* backwards-compatibility macros for users of __BPF_FUNC_MAPPER that don't
>> diff --git a/kernel/trace/bpf_trace.c b/kernel/trace/bpf_trace.c
>> index cd098846e251..f1e58122600d 100644
>> --- a/kernel/trace/bpf_trace.c
>> +++ b/kernel/trace/bpf_trace.c
>> @@ -839,21 +839,30 @@ static void do_bpf_send_signal(struct irq_work *entry)
>>         put_task_struct(work->task);
>>  }
>>
>> -static int bpf_send_signal_common(u32 sig, enum pid_type type)
>> +static int bpf_send_signal_common(u32 sig, enum pid_type type, u32 pid)
>>  {
>>         struct send_signal_irq_work *work = NULL;
>> +       struct task_struct *tsk;
>> +
>> +       if (pid) {
>> +               tsk = find_task_by_vpid(pid);
>
> by vpid ?
>
> tracing bpf prog will have "random" current and "random" pidns.
>
> Should it be find_get_task vs find_task too ?
>
> Should kfunc take 'task' parameter instead
> received from bpf_task_from_pid() ?
>
> two kfuncs for pid/tgid is overkill. Combine into one?

So, I will add a single kfunc that can do both pid and tgid and it will
take the 'task' parameter received from the call to bpf_task_from_pid()
and a 'bool' to select pid/tgid.

>
>> +               if (!tsk)
>> +                       return -ESRCH;
>> +       } else {
>> +               tsk = current;
>> +       }

Thanks,
Puranjay

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 255 bytes --]

  reply	other threads:[~2024-09-04 13:23 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-07-24 11:39 [PATCH bpf-next 1/2] bpf: implement bpf_send_signal_pid/tgid() helpers Puranjay Mohan
2024-07-24 11:39 ` [PATCH bpf-next 2/2] selftests/bpf: Augment send_signal test with remote signaling Puranjay Mohan
2024-07-24 23:23 ` [PATCH bpf-next 1/2] bpf: implement bpf_send_signal_pid/tgid() helpers Alexei Starovoitov
2024-09-04 13:23   ` Puranjay Mohan [this message]
2024-09-04 15:36     ` Alexei Starovoitov
2024-09-04 17:55     ` Andrii Nakryiko
2024-09-05  8:56       ` Puranjay Mohan
2024-09-05 20:41         ` Andrii Nakryiko

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=mb61pjzfrsgc4.fsf@kernel.org \
    --to=puranjay@kernel.org \
    --cc=alexei.starovoitov@gmail.com \
    --cc=andrii@kernel.org \
    --cc=ast@kernel.org \
    --cc=bpf@vger.kernel.org \
    --cc=daniel@iogearbox.net \
    --cc=eddyz87@gmail.com \
    --cc=martin.lau@linux.dev \
    --cc=puranjay12@gmail.com \
    --cc=song@kernel.org \
    --cc=yonghong.song@linux.dev \
    /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.