Netdev List
 help / color / mirror / Atom feed
From: Ben Hutchings <bhutchings@solarflare.com>
To: "Keller, Jacob E" <jacob.e.keller@intel.com>
Cc: "Kirsher, Jeffrey T" <jeffrey.t.kirsher@intel.com>,
	"davem@davemloft.net" <davem@davemloft.net>,
	"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
	"gospo@redhat.com" <gospo@redhat.com>,
	"sassmann@redhat.com" <sassmann@redhat.com>,
	Richard Cochran <richardcochran@gmail.com>,
	"Vick, Matthew" <matthew.vick@intel.com>,
	"Brandeburg, Jesse" <jesse.brandeburg@intel.com>
Subject: Re: [net-next v2 14/17] i40e: enable PTP
Date: Fri, 10 Jan 2014 22:08:46 +0000	[thread overview]
Message-ID: <1389391726.2025.119.camel@bwh-desktop.uk.level5networks.com> (raw)
In-Reply-To: <1389390171.8039.21.camel@jekeller-desk1.amr.corp.intel.com>

On Fri, 2014-01-10 at 21:42 +0000, Keller, Jacob E wrote:
> On Fri, 2014-01-10 at 20:37 +0000, Ben Hutchings wrote:
> > On Fri, 2014-01-10 at 12:30 -0800, Jeff Kirsher wrote:
> > > From: Jacob Keller <jacob.e.keller@intel.com>
> > > 
> > > New feature: Enable PTP support in the i40e driver.
> > > 
> > > Change-ID: I6a8e799f582705191f9583afb1b9231a8db96cc8
> > > Cc: Richard Cochran <richardcochran@gmail.com>
> > > Cc: Ben Hutchings <bhutchings@solarflare.com>
> > > Signed-off-by: Matthew Vick <matthew.vick@intel.com>
> > > Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
> > > Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
> > > Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
> > > ---
> > >  drivers/net/ethernet/intel/Kconfig             |   1 +
> > >  drivers/net/ethernet/intel/i40e/Makefile       |   1 +
> > >  drivers/net/ethernet/intel/i40e/i40e.h         |  26 +
> > >  drivers/net/ethernet/intel/i40e/i40e_ethtool.c |  33 +-
> > >  drivers/net/ethernet/intel/i40e/i40e_main.c    |  47 +-
> > >  drivers/net/ethernet/intel/i40e/i40e_ptp.c     | 662 +++++++++++++++++++++++++
> > >  drivers/net/ethernet/intel/i40e/i40e_txrx.c    |  53 ++
> > >  drivers/net/ethernet/intel/i40e/i40e_txrx.h    |   3 +
> > >  8 files changed, 824 insertions(+), 2 deletions(-)
> > >  create mode 100644 drivers/net/ethernet/intel/i40e/i40e_ptp.c
> > > 
> > > diff --git a/drivers/net/ethernet/intel/Kconfig b/drivers/net/ethernet/intel/Kconfig
> > > index 9fb2eb8..333bb54 100644
> > > --- a/drivers/net/ethernet/intel/Kconfig
> > > +++ b/drivers/net/ethernet/intel/Kconfig
> > [...]
> > > +void i40e_ptp_init(struct i40e_pf *pf)
> > > +{
> > > +	struct i40e_hw *hw = &pf->hw;
> > > +	struct net_device *netdev = pf->vsi[pf->lan_vsi]->netdev;
> > > +
> > > +	strncpy(pf->ptp_caps.name, netdev->name, sizeof(pf->ptp_caps.name));
> > [...]
> > 
> > I recommended using the *driver* name as the clock name.  The net device
> > doesn't even have a proper name at this point.

Actually, on closer inspection it looks like the net device gets
registered before this is called, so the name will be valid.  However
the net device can (and probably will) be renamed after registration so
this name may become stale.

If the net device is registered first, this raises a different problem:
i40e_get_ts_info() can then race with PTP init and cleanup; it can see a
non-null but invalid value of pf->ptp_clock if it races with this in
i40e_ptp_init():

> +	/* Attempt to register the clock before enabling the hardware. */
> +	pf->ptp_clock = ptp_clock_register(&pf->ptp_caps, &pf->pdev->dev);
> +	if (IS_ERR(pf->ptp_clock)) {

or it can see a non-null value of ptp_clock just before the clock is
freed, then use-after-free.

You could use rtnl_lock() to serialise the registration/unregistration
with i40e_get_ts_info(), or reorder init and cleanup so the clock is
registered before the net device and unregistered after.

> > Ben.
> > 
> 
> We use netdev->name a few lines farther down.. should that be changed as
> well?

I think that's fine if it's done after the net device is registered.
However you would normally use netdev_info() to include the name at the
beginning of the log line.

Ben.

> Sorry about this one. The ixgbe driver initializes clock at open
> instead of at init, so it has a valid clock name already.

-- 
Ben Hutchings, Staff Engineer, Solarflare
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.

  reply	other threads:[~2014-01-10 22:08 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-01-10 20:30 [net-next v2 00/17][pull request] Intel Wired LAN Driver Updates Jeff Kirsher
2014-01-10 20:30 ` [net-next v2 01/17] i40e: use assignment instead of memcpy Jeff Kirsher
2014-01-10 20:30 ` [net-next v2 02/17] i40e: drop unused macros Jeff Kirsher
2014-01-10 20:30 ` [net-next v2 03/17] i40e: Update the Current NVM version Low value Jeff Kirsher
2014-01-10 20:30 ` [net-next v2 04/17] i40e: Bump version Jeff Kirsher
2014-01-10 20:30 ` [net-next v2 05/17] i40e: fix long lines Jeff Kirsher
2014-01-10 20:30 ` [net-next v2 06/17] i40e: Cleanup Doxygen warnings Jeff Kirsher
2014-01-10 20:30 ` [net-next v2 07/17] i40e: Setting queue count to 1 using ethtool is valid Jeff Kirsher
2014-01-10 20:30 ` [net-next v2 08/17] i40e: do not bail when disabling if Tx queue disable fails Jeff Kirsher
2014-01-10 20:30 ` [net-next v2 09/17] i40e: allow VF to remove any MAC filter Jeff Kirsher
2014-01-10 20:30 ` [net-next v2 10/17] i40e: check for possible incorrect ipv6 checksum Jeff Kirsher
2014-01-10 20:30 ` [net-next v2 11/17] i40e: adjust ITR max and min values Jeff Kirsher
2014-01-10 20:30 ` [net-next v2 12/17] i40e: clear qtx_head before enabling Tx queue Jeff Kirsher
2014-01-10 20:30 ` [net-next v2 13/17] i40e: call clear_pxe after adminq is initialized Jeff Kirsher
2014-01-10 20:30 ` [net-next v2 14/17] i40e: enable PTP Jeff Kirsher
2014-01-10 20:37   ` Ben Hutchings
2014-01-10 21:42     ` Keller, Jacob E
2014-01-10 22:08       ` Ben Hutchings [this message]
2014-01-10 20:30 ` [net-next v2 15/17] i40e: fix log message wording Jeff Kirsher
2014-01-10 20:30 ` [net-next v2 16/17] i40e: Bump version Jeff Kirsher
2014-01-10 20:30 ` [net-next v2 17/17] i40evf: fix s390 build failure due to implicit prefetch.h Jeff Kirsher

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=1389391726.2025.119.camel@bwh-desktop.uk.level5networks.com \
    --to=bhutchings@solarflare.com \
    --cc=davem@davemloft.net \
    --cc=gospo@redhat.com \
    --cc=jacob.e.keller@intel.com \
    --cc=jeffrey.t.kirsher@intel.com \
    --cc=jesse.brandeburg@intel.com \
    --cc=matthew.vick@intel.com \
    --cc=netdev@vger.kernel.org \
    --cc=richardcochran@gmail.com \
    --cc=sassmann@redhat.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox