* [PATCH net v2] xdp: xdp_mem_allocator can be NULL in trace_mem_connect().
@ 2022-03-09 20:47 Sebastian Andrzej Siewior
2022-03-09 21:36 ` Steven Rostedt
2022-03-09 21:52 ` Toke Høiland-Jørgensen
0 siblings, 2 replies; 3+ messages in thread
From: Sebastian Andrzej Siewior @ 2022-03-09 20:47 UTC (permalink / raw)
To: Jakub Kicinski
Cc: Toke Høiland-Jørgensen, netdev, bpf, Alexei Starovoitov,
Andrii Nakryiko, Daniel Borkmann, David S. Miller, Ingo Molnar,
Jesper Dangaard Brouer, John Fastabend, KP Singh,
Martin KaFai Lau, Song Liu, Steven Rostedt, Thomas Gleixner,
Yonghong Song
Since the commit mentioned below __xdp_reg_mem_model() can return a NULL
pointer. This pointer is dereferenced in trace_mem_connect() which leads
to segfault.
The trace points (mem_connect + mem_disconnect) were put in place to
pair connect/disconnect using the IDs. The ID is only assigned if
__xdp_reg_mem_model() does not return NULL. That connect trace point is
of no use if there is no ID.
Skip that connect trace point if xdp_alloc is NULL.
[ Toke Høiland-Jørgensen delivered the reasoning for skipping the trace
point ]
Fixes: 4a48ef70b93b8 ("xdp: Allow registering memory model without rxq reference")
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
v1…v2:
- Instead letting the trace point deal with a NULL pointer, skip the
trace point.
net/core/xdp.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/net/core/xdp.c b/net/core/xdp.c
index 7aba355049862..8ebb22eb6497c 100644
--- a/net/core/xdp.c
+++ b/net/core/xdp.c
@@ -357,7 +357,8 @@ int xdp_rxq_info_reg_mem_model(struct xdp_rxq_info *xdp_rxq,
if (IS_ERR(xdp_alloc))
return PTR_ERR(xdp_alloc);
- trace_mem_connect(xdp_alloc, xdp_rxq);
+ if (xdp_alloc)
+ trace_mem_connect(xdp_alloc, xdp_rxq);
return 0;
}
--
2.35.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH net v2] xdp: xdp_mem_allocator can be NULL in trace_mem_connect().
2022-03-09 20:47 [PATCH net v2] xdp: xdp_mem_allocator can be NULL in trace_mem_connect() Sebastian Andrzej Siewior
@ 2022-03-09 21:36 ` Steven Rostedt
2022-03-09 21:52 ` Toke Høiland-Jørgensen
1 sibling, 0 replies; 3+ messages in thread
From: Steven Rostedt @ 2022-03-09 21:36 UTC (permalink / raw)
To: Sebastian Andrzej Siewior
Cc: Jakub Kicinski, Toke Høiland-Jørgensen, netdev, bpf,
Alexei Starovoitov, Andrii Nakryiko, Daniel Borkmann,
David S. Miller, Ingo Molnar, Jesper Dangaard Brouer,
John Fastabend, KP Singh, Martin KaFai Lau, Song Liu,
Thomas Gleixner, Yonghong Song
On Wed, 9 Mar 2022 21:47:38 +0100
Sebastian Andrzej Siewior <bigeasy@linutronix.de> wrote:
> --- a/net/core/xdp.c
> +++ b/net/core/xdp.c
> @@ -357,7 +357,8 @@ int xdp_rxq_info_reg_mem_model(struct xdp_rxq_info *xdp_rxq,
> if (IS_ERR(xdp_alloc))
> return PTR_ERR(xdp_alloc);
>
> - trace_mem_connect(xdp_alloc, xdp_rxq);
> + if (xdp_alloc)
Eliminate the check when tracing is disabled:
if (trace_mem_connect_enabled() && xdp_alloc)
-- Steve
> + trace_mem_connect(xdp_alloc, xdp_rxq);
> return 0;
> }
>
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH net v2] xdp: xdp_mem_allocator can be NULL in trace_mem_connect().
2022-03-09 20:47 [PATCH net v2] xdp: xdp_mem_allocator can be NULL in trace_mem_connect() Sebastian Andrzej Siewior
2022-03-09 21:36 ` Steven Rostedt
@ 2022-03-09 21:52 ` Toke Høiland-Jørgensen
1 sibling, 0 replies; 3+ messages in thread
From: Toke Høiland-Jørgensen @ 2022-03-09 21:52 UTC (permalink / raw)
To: Sebastian Andrzej Siewior, Jakub Kicinski
Cc: netdev, bpf, Alexei Starovoitov, Andrii Nakryiko, Daniel Borkmann,
David S. Miller, Ingo Molnar, Jesper Dangaard Brouer,
John Fastabend, KP Singh, Martin KaFai Lau, Song Liu,
Steven Rostedt, Thomas Gleixner, Yonghong Song
Sebastian Andrzej Siewior <bigeasy@linutronix.de> writes:
> Since the commit mentioned below __xdp_reg_mem_model() can return a NULL
> pointer. This pointer is dereferenced in trace_mem_connect() which leads
> to segfault.
>
> The trace points (mem_connect + mem_disconnect) were put in place to
> pair connect/disconnect using the IDs. The ID is only assigned if
> __xdp_reg_mem_model() does not return NULL. That connect trace point is
> of no use if there is no ID.
>
> Skip that connect trace point if xdp_alloc is NULL.
>
> [ Toke Høiland-Jørgensen delivered the reasoning for skipping the trace
> point ]
>
> Fixes: 4a48ef70b93b8 ("xdp: Allow registering memory model without rxq reference")
> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
With Steven's fix:
Acked-by: Toke Høiland-Jørgensen <toke@redhat.com>
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2022-03-09 21:52 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-03-09 20:47 [PATCH net v2] xdp: xdp_mem_allocator can be NULL in trace_mem_connect() Sebastian Andrzej Siewior
2022-03-09 21:36 ` Steven Rostedt
2022-03-09 21:52 ` Toke Høiland-Jørgensen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).