public inbox for netdev@vger.kernel.org
 help / color / mirror / Atom feed
From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
To: davem@davemloft.net
Cc: Jacob Keller <jacob.e.keller@intel.com>,
	netdev@vger.kernel.org, nhorman@redhat.com, sassmann@redhat.com,
	Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Subject: [net-next 03/14] ixgbe: fix use of list_for_each in ixgbe_enumerate_functions
Date: Thu, 24 Jul 2014 06:13:13 -0700	[thread overview]
Message-ID: <1406207604-31653-4-git-send-email-jeffrey.t.kirsher@intel.com> (raw)
In-Reply-To: <1406207604-31653-1-git-send-email-jeffrey.t.kirsher@intel.com>

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

Fix a bug in the misuse of the list_for_each macro to loop over every
entry in the bus_list. Instead of attempting to loop over the list from
a random entry point, go up to the bus and use the real list_head entry
point. This prevents the possible read or write of unallocated or
incorrectly addressed memory.

Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
Tested-by: Phil Schmitt <phillip.j.schmitt@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
 drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 17 +++++++----------
 1 file changed, 7 insertions(+), 10 deletions(-)

diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
index 9aa9d0b..4268a89 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
@@ -7973,23 +7973,20 @@ static const struct net_device_ops ixgbe_netdev_ops = {
  **/
 static inline int ixgbe_enumerate_functions(struct ixgbe_adapter *adapter)
 {
-	struct list_head *entry;
+	struct pci_dev *entry;
 	int physfns = 0;
 
 	/* Some cards can not use the generic count PCIe functions method,
 	 * because they are behind a parent switch, so we hardcode these with
 	 * the correct number of functions.
 	 */
-	if (ixgbe_pcie_from_parent(&adapter->hw)) {
+	if (ixgbe_pcie_from_parent(&adapter->hw))
 		physfns = 4;
-	} else {
-		list_for_each(entry, &adapter->pdev->bus_list) {
-			struct pci_dev *pdev =
-				list_entry(entry, struct pci_dev, bus_list);
-			/* don't count virtual functions */
-			if (!pdev->is_virtfn)
-				physfns++;
-		}
+
+	list_for_each_entry(entry, &adapter->pdev->bus->devices, bus_list) {
+		/* don't count virtual functions */
+		if (!entry->is_virtfn)
+			physfns++;
 	}
 
 	return physfns;
-- 
1.9.3

  parent reply	other threads:[~2014-07-24 13:14 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-07-24 13:13 [net-next 00/14][pull request] Intel Wired LAN Driver Updates 2014-07-24 Jeff Kirsher
2014-07-24 13:13 ` [net-next 01/14] ixgbe: Fix possible null-dereference in error path Jeff Kirsher
2014-07-24 13:13 ` [net-next 02/14] ixgbe: Change some uses of strncpy to strlcpy Jeff Kirsher
2014-07-24 13:13 ` Jeff Kirsher [this message]
2014-07-24 16:48   ` [net-next 03/14] ixgbe: fix use of list_for_each in ixgbe_enumerate_functions Keller, Jacob E
2014-07-24 13:13 ` [net-next 04/14] ixgbe: don't check minimum link when direct assigned to virtual machine Jeff Kirsher
2014-07-24 13:13 ` [net-next 05/14] igb: Add message when malformed packets detected by hw Jeff Kirsher
2014-07-24 13:13 ` [net-next 06/14] igb: bump igb version to 5.2.13 Jeff Kirsher
2014-07-24 13:13 ` [net-next 07/14] i40e: fix format mismatch in drivers/net/ethernet/intel/i40e/i40e_debugfs.c Jeff Kirsher
2014-07-24 13:13 ` [net-next 08/14] i40e/i40evf: Add nvmupdate support Jeff Kirsher
2014-07-24 13:13 ` [net-next 09/14] i40e/i40evf: fix extension header csum logic Jeff Kirsher
2014-07-24 13:13 ` [net-next 10/14] i40evf: don't wait so long Jeff Kirsher
2014-07-24 13:13 ` [net-next 11/14] i40e/i40evf: ARQ copy desc data even for failed commands Jeff Kirsher
2014-07-24 13:13 ` [net-next 12/14] i40e: Fix firmware API version errors Jeff Kirsher
2014-07-24 13:13 ` [net-next 13/14] i40e: Give link more time after setting flow control Jeff Kirsher
2014-07-24 13:13 ` [net-next 14/14] i40e: always print aqtx answer Jeff Kirsher
2014-07-24 18:42   ` Joe Perches
2014-07-24 19:20     ` Nelson, Shannon
2014-07-24 19:56       ` Joe Perches
2014-07-24 20:13         ` Nelson, Shannon
2014-07-25  6:08 ` [net-next 00/14][pull request] Intel Wired LAN Driver Updates 2014-07-24 David Miller

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=1406207604-31653-4-git-send-email-jeffrey.t.kirsher@intel.com \
    --to=jeffrey.t.kirsher@intel.com \
    --cc=davem@davemloft.net \
    --cc=jacob.e.keller@intel.com \
    --cc=netdev@vger.kernel.org \
    --cc=nhorman@redhat.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