All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alice Michael <alice.michael@intel.com>
To: intel-wired-lan@osuosl.org
Subject: [Intel-wired-lan] [next PATCH S93 11/11] i40e: fix i40e_add_queue_stats data pointer update
Date: Tue, 31 Jul 2018 03:41:48 -0700	[thread overview]
Message-ID: <20180731104148.11896-11-alice.michael@intel.com> (raw)
In-Reply-To: <20180731104148.11896-1-alice.michael@intel.com>

From: Jacob Keller <jacob.e.keller@intel.com>

This function accidentally failed to update the data pointer, which
caused the reported stats to be incorrect. Additionally, statistics
which follow queue stats in the output would potentially read non-zeroed
garbage data from the ethtool buffer.

This occurred because the data double pointer was not dereferenced
before incrementing the size.

Additionally, make sure this issue is more visible by adding a WARN_ONCE
to the i40e_get_ethtool_stats function. This warning will trigger
whenever the data pointer is not at the expected address, similar to the
check that we make in the i40e_get_stat_strings() function.

Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
---
 drivers/net/ethernet/intel/i40e/i40e_ethtool.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c
index cd23d1e..abcd096 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c
@@ -1860,6 +1860,7 @@ static void i40e_get_ethtool_stats(struct net_device *netdev,
 	unsigned int i;
 	unsigned int start;
 	bool veb_stats;
+	u64 *p = data;
 
 	i40e_update_stats(vsi);
 
@@ -1902,7 +1903,7 @@ static void i40e_get_ethtool_stats(struct net_device *netdev,
 	}
 	rcu_read_unlock();
 	if (vsi != pf->vsi[pf->lan_vsi] || pf->hw.partition_id != 1)
-		return;
+		goto check_data_pointer;
 
 	veb_stats = ((pf->lan_veb != I40E_NO_VEB) &&
 		     (pf->flags & I40E_FLAG_VEB_STATS_ENABLED));
@@ -1925,6 +1926,10 @@ static void i40e_get_ethtool_stats(struct net_device *netdev,
 
 		i40e_add_ethtool_stats(&data, &pfc, i40e_gstrings_pfc_stats);
 	}
+
+check_data_pointer:
+	WARN_ONCE(data - p != i40e_get_stats_count(netdev),
+		  "ethtool stats count mismatch!");
 }
 
 /**
-- 
2.9.5


  parent reply	other threads:[~2018-07-31 10:41 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-07-31 10:41 [Intel-wired-lan] [next PATCH S93 01/11] i40e: add helper function for copying strings from stat arrays Alice Michael
2018-07-31 10:41 ` [Intel-wired-lan] [next PATCH S93 02/11] i40e: add helper to copy statistic values into ethtool buffer Alice Michael
2018-08-02 18:29   ` Bowers, AndrewX
2018-07-31 10:41 ` [Intel-wired-lan] [next PATCH S93 03/11] i40e: Set fec_config when forcing link state Alice Michael
2018-08-02 18:30   ` Bowers, AndrewX
2018-07-31 10:41 ` [Intel-wired-lan] [next PATCH S93 04/11] i40e: convert VEB TC stats to use an i40e_stats array Alice Michael
2018-08-02 18:30   ` Bowers, AndrewX
2018-07-31 10:41 ` [Intel-wired-lan] [next PATCH S93 05/11] i40e: convert priority flow control stats to use helpers Alice Michael
2018-08-02 18:31   ` Bowers, AndrewX
2018-07-31 10:41 ` [Intel-wired-lan] [next PATCH S93 06/11] i40e: Write access protected registers through AQC Alice Michael
2018-08-02 18:31   ` Bowers, AndrewX
2018-07-31 10:41 ` [Intel-wired-lan] [next PATCH S93 07/11] i40e: remove unnecessary i variable causing -Wshadow warning Alice Michael
2018-08-02 18:32   ` Bowers, AndrewX
2018-07-31 10:41 ` [Intel-wired-lan] [next PATCH S93 08/11] i40e: fix warning about shadowed ring parameter Alice Michael
2018-08-02 18:33   ` Bowers, AndrewX
2018-07-31 10:41 ` [Intel-wired-lan] [next PATCH S93 09/11] i40e: Add additional return code to i40e_asq_send_command Alice Michael
2018-08-02 18:33   ` Bowers, AndrewX
2018-07-31 10:41 ` [Intel-wired-lan] [next PATCH S93 10/11] i40e: Add AQ command for rearrange NVM structure Alice Michael
2018-08-02 18:34   ` Bowers, AndrewX
2018-07-31 10:41 ` Alice Michael [this message]
2018-08-02 18:34   ` [Intel-wired-lan] [next PATCH S93 11/11] i40e: fix i40e_add_queue_stats data pointer update Bowers, AndrewX
2018-08-02 18:29 ` [Intel-wired-lan] [next PATCH S93 01/11] i40e: add helper function for copying strings from stat arrays Bowers, AndrewX

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=20180731104148.11896-11-alice.michael@intel.com \
    --to=alice.michael@intel.com \
    --cc=intel-wired-lan@osuosl.org \
    /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.