All of lore.kernel.org
 help / color / mirror / Atom feed
From: Simon Horman <horms@kernel.org>
To: Kory Maincent <kory.maincent@bootlin.com>
Cc: Florian Fainelli <florian.fainelli@broadcom.com>,
	Broadcom internal kernel review list
	<bcm-kernel-feedback-list@broadcom.com>,
	Andrew Lunn <andrew@lunn.ch>,
	Heiner Kallweit <hkallweit1@gmail.com>,
	Russell King <linux@armlinux.org.uk>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	Richard Cochran <richardcochran@gmail.com>,
	Radu Pirea <radu-nicolae.pirea@oss.nxp.com>,
	Jay Vosburgh <j.vosburgh@gmail.com>,
	Andy Gospodarek <andy@greyhouse.net>,
	Nicolas Ferre <nicolas.ferre@microchip.com>,
	Claudiu Beznea <claudiu.beznea@tuxon.dev>,
	Willem de Bruijn <willemdebruijn.kernel@gmail.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Horatiu Vultur <horatiu.vultur@microchip.com>,
	UNGLinuxDriver@microchip.com,
	Vladimir Oltean <vladimir.oltean@nxp.com>,
	Thomas Petazzoni <thomas.petazzoni@bootlin.com>,
	netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-doc@vger.kernel.org,
	Maxime Chevallier <maxime.chevallier@bootlin.com>,
	Rahul Rameshbabu <rrameshbabu@nvidia.com>
Subject: Re: [PATCH net-next v12 12/13] net: ethtool: tsinfo: Add support for hwtstamp provider and get/set hwtstamp config
Date: Sat, 4 May 2024 11:33:05 +0100	[thread overview]
Message-ID: <20240504103305.GD3167983@kernel.org> (raw)
In-Reply-To: <20240430-feature_ptp_netnext-v12-12-2c5f24b6a914@bootlin.com>

On Tue, Apr 30, 2024 at 05:49:55PM +0200, Kory Maincent wrote:
> Enhance 'get' command to retrieve tsinfo of hwtstamp providers within a
> network topology and read current hwtstamp configuration.
> 
> Introduce support for ETHTOOL_MSG_TSINFO_SET ethtool netlink socket to
> configure hwtstamp of a PHC provider. Note that simultaneous hwtstamp
> isn't supported; configuring a new one disables the previous setting.
> 
> Also, add support for a specific dump command to retrieve all hwtstamp
> providers within the network topology, with added functionality for
> filtered dump to target a single interface.
> 
> Signed-off-by: Kory Maincent <kory.maincent@bootlin.com>

...

> diff --git a/net/core/dev_ioctl.c b/net/core/dev_ioctl.c
> index acb0cadb7512..ec6dd81a5add 100644
> --- a/net/core/dev_ioctl.c
> +++ b/net/core/dev_ioctl.c
> @@ -270,10 +270,13 @@ static int dev_eth_ioctl(struct net_device *dev,
>  int dev_get_hwtstamp_phylib(struct net_device *dev,
>  			    struct kernel_hwtstamp_config *cfg)
>  {
> -	if (dev->hwtstamp) {
> -		struct ptp_clock *ptp = dev->hwtstamp->ptp;
> +	struct hwtstamp_provider *hwtstamp;
>  
> -		cfg->qualifier = dev->hwtstamp->qualifier;
> +	hwtstamp = rtnl_dereference(dev->hwtstamp);
> +	if (hwtstamp) {
> +		struct ptp_clock *ptp = hwtstamp->ptp;
> +
> +		cfg->qualifier = hwtstamp->qualifier;
>  		if (ptp_clock_from_phylib(ptp))
>  			return phy_hwtstamp_get(ptp_clock_phydev(ptp), cfg);
>  
> @@ -340,13 +343,15 @@ int dev_set_hwtstamp_phylib(struct net_device *dev,
>  {
>  	const struct net_device_ops *ops = dev->netdev_ops;
>  	struct kernel_hwtstamp_config old_cfg = {};
> +	struct hwtstamp_provider *hwtstamp;
>  	struct phy_device *phydev;
>  	bool changed = false;
>  	bool phy_ts;
>  	int err;
>  
> -	if (dev->hwtstamp) {
> -		struct ptp_clock *ptp = dev->hwtstamp->ptp;
> +	hwtstamp = rtnl_dereference(dev->hwtstamp);
> +	if (hwtstamp) {
> +		struct ptp_clock *ptp = hwtstamp->ptp;
>  
>  		if (ptp_clock_from_phylib(ptp)) {
>  			phy_ts = true;

Hi Kory,

A few lines beyond this hunk, within the "if (hwtstamp)" block,
is the following:

		cfg->qualifier = dev->hwtstamp->qualifier;

Now that dev->hwtstamp is managed using RCU, I don't think it is correct
to dereference it directly like this. Rather, the hwtstamp local variable,
which has rcu_dereference'd this pointer should be used:

		 cfg->qualifier = hwtstamp->qualifier;

Flagged by Sparse.

...

> diff --git a/net/ethtool/tsinfo.c b/net/ethtool/tsinfo.c

...

> +static int ethnl_tsinfo_dump_one_dev(struct sk_buff *skb, struct net_device *dev,
> +				     struct netlink_callback *cb)
> +{
> +	struct ethnl_tsinfo_dump_ctx *ctx = (void *)cb->ctx;
> +	struct ptp_clock *ptp;
> +	int ret;
> +
> +	netdev_for_each_ptp_clock_start(dev, ctx->pos_phcindex, ptp,
> +					ctx->pos_phcindex) {
> +		ret = ethnl_tsinfo_dump_one_ptp(skb, dev, cb, ptp);
> +		if (ret < 0 && ret != -EOPNOTSUPP)
> +			break;
> +		ctx->pos_phcqualifier = HWTSTAMP_PROVIDER_QUALIFIER_PRECISE;
> +	}
> +
> +	return ret;

Perhaps it is not possible, but if the loop iterates zero times then
ret will be used uninitialised here.

Flagged by Smatch.

> +}

...

  reply	other threads:[~2024-05-04 10:34 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-30 15:49 [PATCH net-next v12 00/13] net: Make timestamping selectable Kory Maincent
2024-04-30 15:49 ` [PATCH net-next v12 01/13] net_tstamp: Add TIMESTAMPING SOFTWARE and HARDWARE mask Kory Maincent
2024-04-30 15:49 ` [PATCH net-next v12 02/13] net: Move dev_set_hwtstamp_phylib to net/core/dev.h Kory Maincent
2024-04-30 15:49 ` [PATCH net-next v12 03/13] net: Make dev_get_hwtstamp_phylib accessible Kory Maincent
2024-04-30 15:49 ` [PATCH net-next v12 04/13] net: Make net_hwtstamp_validate accessible Kory Maincent
2024-04-30 15:49 ` [PATCH net-next v12 05/13] net: Change the API of PHY default timestamp to MAC Kory Maincent
2024-04-30 15:49 ` [PATCH net-next v12 06/13] net: net_tstamp: Add unspec field to hwtstamp_source enumeration Kory Maincent
2024-04-30 15:49 ` [PATCH net-next v12 07/13] net: Add struct kernel_ethtool_ts_info Kory Maincent
2024-04-30 15:49 ` [PATCH net-next v12 08/13] ptp: Add phc source and helpers to register specific PTP clock or get information Kory Maincent
2024-04-30 15:49 ` [PATCH net-next v12 09/13] net: Add the possibility to support a selected hwtstamp in netdevice Kory Maincent
2024-05-02  2:10   ` Jakub Kicinski
2024-04-30 15:49 ` [PATCH net-next v12 10/13] net: netdevsim: ptp_mock: Convert to netdev_ptp_clock_register Kory Maincent
2024-04-30 15:49 ` [PATCH net-next v12 11/13] net: macb: " Kory Maincent
2024-04-30 15:49 ` [PATCH net-next v12 12/13] net: ethtool: tsinfo: Add support for hwtstamp provider and get/set hwtstamp config Kory Maincent
2024-05-04 10:33   ` Simon Horman [this message]
2024-05-17 15:12     ` Kory Maincent
2024-04-30 15:49 ` [PATCH net-next v12 13/13] netlink: specs: tsinfo: Enhance netlink attributes and add a set command Kory Maincent
2024-05-02  2:14   ` Jakub Kicinski
2024-05-17 15:58     ` Kory Maincent
2024-05-02  2:09 ` [PATCH net-next v12 00/13] net: Make timestamping selectable Jakub Kicinski
2024-05-17 15:13   ` Kory Maincent

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=20240504103305.GD3167983@kernel.org \
    --to=horms@kernel.org \
    --cc=UNGLinuxDriver@microchip.com \
    --cc=andrew@lunn.ch \
    --cc=andy@greyhouse.net \
    --cc=bcm-kernel-feedback-list@broadcom.com \
    --cc=claudiu.beznea@tuxon.dev \
    --cc=corbet@lwn.net \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=florian.fainelli@broadcom.com \
    --cc=hkallweit1@gmail.com \
    --cc=horatiu.vultur@microchip.com \
    --cc=j.vosburgh@gmail.com \
    --cc=kory.maincent@bootlin.com \
    --cc=kuba@kernel.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=maxime.chevallier@bootlin.com \
    --cc=netdev@vger.kernel.org \
    --cc=nicolas.ferre@microchip.com \
    --cc=pabeni@redhat.com \
    --cc=radu-nicolae.pirea@oss.nxp.com \
    --cc=richardcochran@gmail.com \
    --cc=rrameshbabu@nvidia.com \
    --cc=thomas.petazzoni@bootlin.com \
    --cc=vladimir.oltean@nxp.com \
    --cc=willemdebruijn.kernel@gmail.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.