All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alexei Starovoitov <alexei.starovoitov@gmail.com>
To: Andrii Nakryiko <andrii.nakryiko@gmail.com>
Cc: Qais Yousef <qais.yousef@arm.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Delyan Kratunov <delyank@fb.com>,
	Namhyung Kim <namhyung@kernel.org>,
	Arnaldo Carvalho de Melo <acme@kernel.org>,
	"bigeasy@linutronix.de" <bigeasy@linutronix.de>,
	"dietmar.eggemann@arm.com" <dietmar.eggemann@arm.com>,
	"keescook@chromium.org" <keescook@chromium.org>,
	"x86@kernel.org" <x86@kernel.org>,
	"andrii@kernel.org" <andrii@kernel.org>,
	"u.kleine-koenig@pengutronix.de" <u.kleine-koenig@pengutronix.de>,
	"vincent.guittot@linaro.org" <vincent.guittot@linaro.org>,
	"akpm@linux-foundation.org" <akpm@linux-foundation.org>,
	"mingo@kernel.org" <mingo@kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"rdunlap@infradead.org" <rdunlap@infradead.org>,
	"rostedt@goodmis.org" <rostedt@goodmis.org>,
	"Kenta.Tada@sony.com" <Kenta.Tada@sony.com>,
	"tglx@linutronix.de" <tglx@linutronix.de>,
	"bristot@redhat.com" <bristot@redhat.com>,
	"ebiederm@xmission.com" <ebiederm@xmission.com>,
	"ast@kernel.org" <ast@kernel.org>,
	"legion@kernel.org" <legion@kernel.org>,
	"adharmap@quicinc.com" <adharmap@quicinc.com>,
	"valentin.schneider@arm.com" <valentin.schneider@arm.com>,
	"ed.tsai@mediatek.com" <ed.tsai@mediatek.com>,
	"juri.lelli@redhat.com" <juri.lelli@redhat.com>
Subject: Re: [PATCH] sched/tracing: append prev_state to tp args instead
Date: Wed, 27 Apr 2022 13:32:39 -0700	[thread overview]
Message-ID: <CAADnVQJTZ=QK+G6KU9GW2M7busBQEFbHUYRQsxi_a=ZpATBsyw@mail.gmail.com> (raw)
In-Reply-To: <CAEf4BzYc3f2-9hvuGL_mTO8qNxZjdQn8AabEb-N6Q7XjmEQQ1A@mail.gmail.com>

On Wed, Apr 27, 2022 at 11:17 AM Andrii Nakryiko
<andrii.nakryiko@gmail.com> wrote:
>
> > >
> > > See my reply to Peter. libbpf can't know user's intent to fail this
> > > automatically, in general. In some cases when it can it does
> > > accommodate this automatically. In other cases it provides instruments
> > > for user to handle this (bpf_core_field_size(),
> > > BPF_CORE_READ_BITFIELD(), etc).
> >
> > My naiive thinking is that the function signature has changed (there's 1 extra
> > arg not just a subtle swap of args of the same type) - so I thought that can be
> > detected. But maybe it is harder said than done.
>
> It is. We don't have number of arguments either:
>
> struct bpf_raw_tracepoint_args {
>         __u64 args[0];
> };
>
> What BPF program is getting is just an array of u64s.

Well, that's a true and false statement at the same time
that might confuse folks reading this thread.
To clarify:
raw_tp and tp_btf programs receive an array of u64-s.
raw_tp checks the number of arguments only.
The prog that accesses non-existing arg will be rejected.
tp_btf prog in addition to the number of args knows
the exact type of the arguments.
So in this case accessing arg0 in bpf prog
as 'struct task_struct *' while it's 'unsigned int prev_state'
in the kernel will cause the verifier to reject it.
If prog does bpf_probe_read_kernel() then all bets are off, of course.
There is no type checking mechanism for bpf_probe_read_kernel.
Only BTF powered pointer dereferences are type checked.
The 'tp_btf' prog type is the recommended way to access tracepoints.
The 'raw_tp' was implemented before BTF was introduced.

  reply	other threads:[~2022-04-27 20:33 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-01-20 16:25 [PATCH v3 0/2] sched/tracing: sched_switch prev_state reported as TASK_RUNNING when it's not Valentin Schneider
2022-01-20 16:25 ` [PATCH v3 1/2] sched/tracing: Don't re-read p->state when emitting sched_switch event Valentin Schneider
2022-03-01 15:24   ` [tip: sched/core] " tip-bot2 for Valentin Schneider
2022-03-04 16:13     ` Valentin Schneider
2022-03-08 18:02     ` Qais Yousef
2022-03-08 18:10       ` Greg KH
2022-03-08 18:51         ` Qais Yousef
2022-04-09 23:38           ` Qais Yousef
2022-04-10 22:06             ` Qais Yousef
2022-04-10 23:22               ` Holger Hoffstätte
2022-04-11  7:18                 ` Holger Hoffstätte
2022-04-11  7:28                   ` Greg KH
2022-04-11  8:05                     ` Holger Hoffstätte
2022-04-11 13:23                       ` Greg KH
2022-04-11 13:22             ` Greg KH
2022-04-11 21:06               ` Qais Yousef
2022-01-20 16:25 ` [PATCH v3 2/2] sched/tracing: Report TASK_RTLOCK_WAIT tasks as TASK_UNINTERRUPTIBLE Valentin Schneider
2022-03-01 15:24   ` [tip: sched/core] " tip-bot2 for Valentin Schneider
2022-04-09 23:42   ` [PATCH v3 2/2] " Qais Yousef
2022-04-10  6:14     ` Greg KH
2022-04-10 22:13       ` Qais Yousef
2022-04-11 13:20         ` Greg KH
2022-04-11 20:18           ` Qais Yousef
2022-01-21 17:15 ` [PATCH v3 0/2] sched/tracing: sched_switch prev_state reported as TASK_RUNNING when it's not Steven Rostedt
2022-02-27 15:33   ` Peter Zijlstra
2022-04-21 22:12 ` [PATCH] sched/tracing: append prev_state to tp args instead Delyan Kratunov
2022-04-22 10:13   ` Valentin Schneider
2022-04-22 11:09   ` Peter Zijlstra
2022-04-22 15:55     ` Steven Rostedt
2022-04-22 16:54       ` Andrii Nakryiko
2022-04-22 16:37     ` Andrii Nakryiko
2022-04-22 17:22     ` Delyan Kratunov
2022-04-22 18:30       ` Alexei Starovoitov
2022-04-26 12:28         ` Peter Zijlstra
2022-04-26 14:09           ` Qais Yousef
2022-04-26 15:54             ` Andrii Nakryiko
2022-04-27 10:34               ` Qais Yousef
2022-04-27 18:17                 ` Andrii Nakryiko
2022-04-27 20:32                   ` Alexei Starovoitov [this message]
2022-04-28 10:02                   ` Qais Yousef
2022-05-09 19:32                     ` Andrii Nakryiko
2022-05-10  7:01                       ` Peter Zijlstra
2022-05-10  8:29                         ` Peter Zijlstra
2022-05-10 14:31                           ` Steven Rostedt
2022-05-11 18:28                           ` [PATCH v2] " Delyan Kratunov
2022-05-11 19:10                             ` Steven Rostedt
2022-05-11 22:45                             ` [tip: sched/urgent] sched/tracing: Append " tip-bot2 for Delyan Kratunov
2022-05-11 23:40                             ` [PATCH v2] sched/tracing: append " Thomas Gleixner
2022-04-26 15:51           ` [PATCH] " 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='CAADnVQJTZ=QK+G6KU9GW2M7busBQEFbHUYRQsxi_a=ZpATBsyw@mail.gmail.com' \
    --to=alexei.starovoitov@gmail.com \
    --cc=Kenta.Tada@sony.com \
    --cc=acme@kernel.org \
    --cc=adharmap@quicinc.com \
    --cc=akpm@linux-foundation.org \
    --cc=andrii.nakryiko@gmail.com \
    --cc=andrii@kernel.org \
    --cc=ast@kernel.org \
    --cc=bigeasy@linutronix.de \
    --cc=bristot@redhat.com \
    --cc=delyank@fb.com \
    --cc=dietmar.eggemann@arm.com \
    --cc=ebiederm@xmission.com \
    --cc=ed.tsai@mediatek.com \
    --cc=juri.lelli@redhat.com \
    --cc=keescook@chromium.org \
    --cc=legion@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=namhyung@kernel.org \
    --cc=peterz@infradead.org \
    --cc=qais.yousef@arm.com \
    --cc=rdunlap@infradead.org \
    --cc=rostedt@goodmis.org \
    --cc=tglx@linutronix.de \
    --cc=u.kleine-koenig@pengutronix.de \
    --cc=valentin.schneider@arm.com \
    --cc=vincent.guittot@linaro.org \
    --cc=x86@kernel.org \
    /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.