All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jakub Kicinski <kuba@kernel.org>
To: Andrew Lunn <andrew@lunn.ch>
Cc: Ido Schimmel <idosch@idosch.org>,
	netdev@vger.kernel.org, davem@davemloft.net, mkubecek@suse.cz,
	pali@kernel.org, jacob.e.keller@intel.com, vadimp@nvidia.com,
	mlxsw@nvidia.com, Ido Schimmel <idosch@nvidia.com>
Subject: Re: [RFC PATCH net-next 3/4] ethtool: Add ability to flash transceiver modules' firmware
Date: Mon, 29 Nov 2021 17:04:35 -0800	[thread overview]
Message-ID: <20211129170435.31148177@kicinski-fedora-pc1c0hjn.dhcp.thefacebook.com> (raw)
In-Reply-To: <YaVqtD0pOKdrC9X0@lunn.ch>

On Tue, 30 Nov 2021 01:05:08 +0100 Andrew Lunn wrote:
> What i'm missing is some sort of state machine to keep track of the
> SFP. Since RTNL is not held other operations could be performed in
> parallel. Does CMIS allow this? Can you intermix firmware writes with
> reading the temperature sensor for hwmon? Poll the LOS indicator to
> see if the link has been lost?

Ah, rtnl_lock is not held throughout? I just looked at this code:

+	rtnl_lock();
+	ret = ethnl_ops_begin(dev);
+	if (ret < 0)
+		goto out_rtnl;
+
+	ret = module_flash_fw(dev, tb, info->extack);
+
+	ethnl_ops_complete(dev);
+
+out_rtnl:
+	rtnl_unlock();

and assumed module_flash_fw() flashes the module's FW, not starts 
an async process...

And it appears the user is racy:

+	dev_put(ns->netdev);
+	rtnl_lock();
+	ns->ethtool.module_fw.in_progress = false;
+	rtnl_unlock();
+	release_firmware(ns->ethtool.module_fw.fw);

The dev_put() should be last, otherwise references to ns could be UAF?

> With cable testing, phylib already has a state machine, and i added a
> new state for cable test running. If any other operation happened
> which would cause a change out of this state, like ifdown, or a
> request to restart autoneg, the cable test is aborted first.

  reply	other threads:[~2021-11-30  1:04 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-27 17:45 [RFC PATCH net-next 0/4] ethtool: Add ability to flash and query transceiver modules' firmware Ido Schimmel
2021-11-27 17:45 ` [RFC PATCH net-next 1/4] ethtool: Add ability to query transceiver modules' firmware information Ido Schimmel
2021-11-29 17:43   ` Jakub Kicinski
2021-11-27 17:45 ` [RFC PATCH net-next 2/4] netdevsim: Implement support for ethtool_ops::get_module_fw_info Ido Schimmel
2021-11-27 17:45 ` [RFC PATCH net-next 3/4] ethtool: Add ability to flash transceiver modules' firmware Ido Schimmel
2021-11-29 23:41   ` Andrew Lunn
2021-11-30  0:05   ` Andrew Lunn
2021-11-30  1:04     ` Jakub Kicinski [this message]
2021-11-27 17:45 ` [RFC PATCH net-next 4/4] netdevsim: Implement support for ethtool_ops::start_fw_flash_module Ido Schimmel
2021-11-29 17:37 ` [RFC PATCH net-next 0/4] ethtool: Add ability to flash and query transceiver modules' firmware Jakub Kicinski
2021-11-29 18:05   ` Michal Kubecek
2021-11-29 23:50   ` Andrew Lunn
2021-11-30  1:09     ` Jakub Kicinski
2021-11-30  0:47   ` Keller, Jacob E
2021-11-30  8:36   ` Ido Schimmel
2021-11-30  8:54     ` Michal Kubecek
2021-11-30  9:46       ` Ido Schimmel
2021-11-30 16:59         ` Jakub Kicinski

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=20211129170435.31148177@kicinski-fedora-pc1c0hjn.dhcp.thefacebook.com \
    --to=kuba@kernel.org \
    --cc=andrew@lunn.ch \
    --cc=davem@davemloft.net \
    --cc=idosch@idosch.org \
    --cc=idosch@nvidia.com \
    --cc=jacob.e.keller@intel.com \
    --cc=mkubecek@suse.cz \
    --cc=mlxsw@nvidia.com \
    --cc=netdev@vger.kernel.org \
    --cc=pali@kernel.org \
    --cc=vadimp@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.