From: Jakub Kicinski <kuba@kernel.org>
To: jiri@resnulli.us
Cc: Jakub Kicinski <kuba@kernel.org>,
jiri@nvidia.com, andrew+netdev@lunn.ch, tariqt@nvidia.com,
matttbe@kernel.org, leon@kernel.org, daniel.zahka@gmail.com,
mhiramat@kernel.org, skhan@linuxfoundation.org,
pabeni@redhat.com, chuck.lever@oracle.com, mbloch@nvidia.com,
netdev@vger.kernel.org, przemyslaw.kitszel@intel.com,
davem@davemloft.net, horms@kernel.org, donald.hunter@gmail.com,
mschmidt@redhat.com, corbet@lwn.net, saeedm@nvidia.com,
edumazet@google.com, cjubran@nvidia.com, rostedt@goodmis.org,
mathieu.desnoyers@efficios.com
Subject: Re: [net-next,06/10] devlink: add devlink_dev_driver_name() helper and use it in trace events
Date: Tue, 24 Feb 2026 18:23:32 -0800 [thread overview]
Message-ID: <20260225022332.998040-1-kuba@kernel.org> (raw)
In-Reply-To: <20260223145557.248679-7-jiri@resnulli.us>
This is an AI-generated review of your patch. The human sending this
email says "FYI"
For local reproduction steps see https://netdev-ai.bots.linux.dev/ai-local.html
---
devlink: add devlink_dev_driver_name() helper and use it in trace events
In preparation to dev-less devlinks, this patch adds
devlink_dev_driver_name() that safely returns the driver name or NULL,
and uses it in all trace events.
> diff --git a/include/net/devlink.h b/include/net/devlink.h
> index 0afb0958b910..45dec7067a8e 100644
> --- a/include/net/devlink.h
> +++ b/include/net/devlink.h
> @@ -1613,6 +1613,7 @@ struct devlink *priv_to_devlink(void *priv);
> struct device *devlink_to_dev(const struct devlink *devlink);
> const char *devlink_bus_name(const struct devlink *devlink);
> const char *devlink_dev_name(const struct devlink *devlink);
> +const char *devlink_dev_driver_name(const struct devlink *devlink);
>
> /* Devlink instance explicit locking */
> void devl_lock(struct devlink *devlink);
[ ... ]
> diff --git a/net/devlink/core.c b/net/devlink/core.c
> index 2dd6d45bec18..85e83a3b082a 100644
> --- a/net/devlink/core.c
> +++ b/net/devlink/core.c
> @@ -260,6 +260,13 @@ const char *devlink_dev_name(const struct devlink *devlink)
> }
> EXPORT_SYMBOL_GPL(devlink_dev_name);
>
> +const char *devlink_dev_driver_name(const struct devlink *devlink)
> +{
> + struct device *dev = devlink->dev;
> +
> + return dev ? dev->driver->name : NULL;
^^^^^^^^^^^^
> +}
Does this safely handle the case when dev->driver is NULL? The function
checks whether dev is NULL but does not check whether dev->driver is
NULL before dereferencing it.
In the kernel device model, struct device.driver is a pointer that is
NULL when no driver is bound. While devlink instances are typically
created during driver probe (so dev->driver should be non-NULL during
the devlink lifetime), the commit message describes this as a function
that "safely returns the driver name or NULL."
For full safety, especially as this prepares for dev-less devlinks where
lifecycle assumptions may change, should the function also guard against
dev->driver being NULL?
The same codebase already handles this condition in
devlink_nl_driver_info_get():
net/devlink/dev.c:857:
struct device_driver *drv = dev->driver;
if (!drv)
return 0;
Should this be:
return (dev && dev->driver) ? dev->driver->name : NULL;
Is devlink_dev_driver_name() missing EXPORT_SYMBOL_GPL? All sibling
accessor functions (devlink_to_dev, devlink_bus_name, devlink_dev_name)
are exported with EXPORT_SYMBOL_GPL.
The new function is declared in the public header include/net/devlink.h
and is called from trace event definitions in
include/trace/events/devlink.h. The mlxsw driver
(drivers/net/ethernet/mellanox/mlxsw/core.c) includes this trace header
and invokes trace_devlink_hwmsg() and trace_devlink_hwerr(), which
evaluate devlink_dev_driver_name() at the call site.
Since MLXSW_CORE is tristate (can be built as a module), this will cause
a link failure for modular builds.
next prev parent reply other threads:[~2026-02-25 2:23 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-23 14:55 [PATCH net-next 00/10] devlink: introduce shared devlink instance for PFs on same chip Jiri Pirko
2026-02-23 14:55 ` [PATCH net-next 01/10] devlink: expose devlink instance index over netlink Jiri Pirko
2026-02-23 14:55 ` [PATCH net-next 02/10] devlink: store bus_name and dev_name pointers in struct devlink Jiri Pirko
2026-02-23 14:55 ` [PATCH net-next 03/10] devlink: avoid extra iterations when found devlink is not registered Jiri Pirko
2026-02-23 14:55 ` [PATCH net-next 04/10] devlink: allow to use devlink index as a command handle Jiri Pirko
2026-02-23 14:55 ` [PATCH net-next 05/10] devlink: support index-based lookup via bus_name/dev_name handle Jiri Pirko
2026-02-25 2:22 ` Jakub Kicinski
2026-02-25 2:23 ` [net-next,05/10] " Jakub Kicinski
2026-02-23 14:55 ` [PATCH net-next 06/10] devlink: add devlink_dev_driver_name() helper and use it in trace events Jiri Pirko
2026-02-25 2:23 ` Jakub Kicinski [this message]
2026-02-23 14:55 ` [PATCH net-next 07/10] devlink: allow devlink instance allocation without a backing device Jiri Pirko
2026-02-25 2:23 ` [net-next,07/10] " Jakub Kicinski
2026-02-23 14:55 ` [PATCH net-next 08/10] devlink: introduce shared devlink instance for PFs on same chip Jiri Pirko
2026-02-25 2:23 ` [net-next,08/10] " Jakub Kicinski
2026-02-23 14:55 ` [PATCH net-next 09/10] documentation: networking: add shared devlink documentation Jiri Pirko
2026-02-25 2:23 ` [net-next,09/10] " Jakub Kicinski
2026-02-23 14:55 ` [PATCH net-next 10/10] net/mlx5: Add a shared devlink instance for PFs on same chip Jiri Pirko
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=20260225022332.998040-1-kuba@kernel.org \
--to=kuba@kernel.org \
--cc=andrew+netdev@lunn.ch \
--cc=chuck.lever@oracle.com \
--cc=cjubran@nvidia.com \
--cc=corbet@lwn.net \
--cc=daniel.zahka@gmail.com \
--cc=davem@davemloft.net \
--cc=donald.hunter@gmail.com \
--cc=edumazet@google.com \
--cc=horms@kernel.org \
--cc=jiri@nvidia.com \
--cc=jiri@resnulli.us \
--cc=leon@kernel.org \
--cc=mathieu.desnoyers@efficios.com \
--cc=matttbe@kernel.org \
--cc=mbloch@nvidia.com \
--cc=mhiramat@kernel.org \
--cc=mschmidt@redhat.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=przemyslaw.kitszel@intel.com \
--cc=rostedt@goodmis.org \
--cc=saeedm@nvidia.com \
--cc=skhan@linuxfoundation.org \
--cc=tariqt@nvidia.com \
/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.