Re: [PATCH] RDMA/rtrs: guard against null kobj name

Jinpu Wang <[email protected]>
Newsgroups org.kernel.vger.linux-rdma,org.kernel.vger.linux-kernel
Message-ID <CAMGffEmnA6RGfnXh461+NioQBxa4iuiXFfZP-R3e4us45ta6ow@mail.gmail.com>
On Sun, Aug 23, 2026 at 5:43 AM Ryan Mehri <[email protected]> wrote:
>
> In the client, if `init_path()` errors, the callee tries to clean up
> with `rtrs_clt_close_conns()`. However, this can lead to calling the
> event tracing code with `clt_path->kobj->name` being `NULL` and thus
> causing a null pointer dereference when trying to copy from it.
>
> This just adds a guard to check that the name is not `NULL` before
> copying from it. The server appears to have a similar pattern.
>
> Fixes: 5a93929d9f9a1 ("RDMA/rtrs-clt: Add event tracing support")
> Fixes: c16762b7bf54d ("RDMA/rtrs-srv: Add event tracing support")
> Reported-by: [email protected]
> Closes: https://syzkaller.appspot.com/bug?extid=1695193198994f4e7fed
> Signed-off-by: Ryan Mehri <[email protected]>
lgtm, thx!
Reviewed-by: Jack Wang <[email protected]>

> ---
>  drivers/infiniband/ulp/rtrs/rtrs-clt-trace.h | 2 +-
>  drivers/infiniband/ulp/rtrs/rtrs-srv-trace.h | 2 +-
>  2 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/infiniband/ulp/rtrs/rtrs-clt-trace.h b/drivers/infiniband/ulp/rtrs/rtrs-clt-trace.h
> index 7738e2676855..29e23404bb7b 100644
> --- a/drivers/infiniband/ulp/rtrs/rtrs-clt-trace.h
> +++ b/drivers/infiniband/ulp/rtrs/rtrs-clt-trace.h
> @@ -55,7 +55,7 @@ DECLARE_EVENT_CLASS(rtrs_clt_conn_class,
>                 __entry->max_reconnect_attempts = clt->max_reconnect_attempts;
>                 __entry->fail_cnt = clt_path->stats->reconnects.fail_cnt;
>                 __entry->success_cnt = clt_path->stats->reconnects.successful_cnt;
> -               memcpy(__entry->sessname, kobject_name(&clt_path->kobj), NAME_MAX);
> +               strscpy(__entry->sessname, kobject_name(&clt_path->kobj) ?: "", NAME_MAX);
>         ),
>
>         TP_printk("RTRS-CLT: sess='%s' state=%s attempts='%d' max-attempts='%d' fail='%d' success='%d'",
> diff --git a/drivers/infiniband/ulp/rtrs/rtrs-srv-trace.h b/drivers/infiniband/ulp/rtrs/rtrs-srv-trace.h
> index 587d3e033081..a7d7b971e6c8 100644
> --- a/drivers/infiniband/ulp/rtrs/rtrs-srv-trace.h
> +++ b/drivers/infiniband/ulp/rtrs/rtrs-srv-trace.h
> @@ -61,7 +61,7 @@ TRACE_EVENT(send_io_resp_imm,
>                 __entry->msg_id = id->msg_id;
>                 __entry->wr_cnt = atomic_read(&con->c.wr_cnt);
>                 __entry->signal_interval = s->signal_interval;
> -               memcpy(__entry->sessname, kobject_name(&srv_path->kobj), NAME_MAX);
> +               strscpy(__entry->sessname, kobject_name(&srv_path->kobj) ?: "", NAME_MAX);
>         ),
>
>         TP_printk("sess='%s' state='%s' dir=%s err='%d' inval='%d' glob-inval='%d' msgid='%u' wrcnt='%d' sig-interval='%u'",
> --
> 2.55.0
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.