On Thu, Sep 5, 2024 at 12:56 AM Philo Lu <lulie@xxxxxxxxxxxxxxxxx> wrote: > > Replace skb with skb__nullable as the argument name. The suffix tells > bpf verifier through btf that the arg could be NULL and should be > checked in tp_btf prog. > > For now, this is the only nullable argument in tcp tracepoints. > > Signed-off-by: Philo Lu <lulie@xxxxxxxxxxxxxxxxx> > --- > include/trace/events/tcp.h | 12 ++++++------ > 1 file changed, 6 insertions(+), 6 deletions(-) > > diff --git a/include/trace/events/tcp.h b/include/trace/events/tcp.h > index 1c8bd8e186b89..a27c4b619dffd 100644 > --- a/include/trace/events/tcp.h > +++ b/include/trace/events/tcp.h > @@ -91,10 +91,10 @@ DEFINE_RST_REASON(FN, FN) > TRACE_EVENT(tcp_send_reset, > > TP_PROTO(const struct sock *sk, > - const struct sk_buff *skb, > + const struct sk_buff *skb__nullable, > const enum sk_rst_reason reason), > > - TP_ARGS(sk, skb, reason), > + TP_ARGS(sk, skb__nullable, reason), netdev folks pls ack this patch. Yes, it's a bit of a whack a mole and eventually we can get rid of it with a smarter verifier (likely) or smarter objtool (unlikely). Long term we should be able to analyze body of TP_fast_assign automatically and conclude whether it's handling NULL for pointer arguments or not. bpf verifier can easily do it for bpf code. We just need to compile TP_fast_assign() as a tiny bpf snippet. This is work in progress. For now we have to use a suffix like __nullable.