netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [net-next 0/4][pull request] 1GbE Intel Wired LAN Driver Updates 2018-03-05
@ 2018-03-05 18:16 Jeff Kirsher
  2018-03-05 18:16 ` [net-next 1/4] igb: add VF trust infrastructure Jeff Kirsher
                   ` (3 more replies)
  0 siblings, 4 replies; 9+ messages in thread
From: Jeff Kirsher @ 2018-03-05 18:16 UTC (permalink / raw)
  To: davem; +Cc: Jeff Kirsher, netdev, nhorman, sassmann, jogreene

This series contains updates to igb and e1000e.

Corinna Vinschen adds the support for trusted VFs into the igb driver.

Mika fixes an issue where PCIe device is physically unplugged can cause
a kernel crash.  This issue is that netif_device_detach() is called in
these cases, which prevents netif_unregister() from bringing the device
down properly.

Christophe JAILLET fixes an issue with igb where HWTSTAMP_TX_ON was
being handled like a bit mask and not a value.

Pierre-Yves Kerbrat fixes e1000e to use dma_zalloc_coherent() to make
sure the ring is memset to 0 to prevent the area from containing
garbage.

The following are changes since commit be631892948060f44b1ceee3132be1266932071e:
  tcp: add ca_state stat in SCM_TIMESTAMPING_OPT_STATS
and are available in the git repository at:
  git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue 1GbE

Christophe JAILLET (1):
  igb: Fix a test with HWTSTAMP_TX_ON

Corinna Vinschen (1):
  igb: add VF trust infrastructure

Mika Westerberg (1):
  igb: Do not call netif_device_detach() when PCIe link goes missing

Pierre-Yves Kerbrat (1):
  e1000e: allocate ring descriptors with dma_zalloc_coherent

 drivers/net/ethernet/intel/e1000e/netdev.c |  2 +-
 drivers/net/ethernet/intel/igb/igb.h       |  1 +
 drivers/net/ethernet/intel/igb/igb_main.c  | 35 +++++++++++++++++++++++++-----
 3 files changed, 31 insertions(+), 7 deletions(-)

-- 
2.14.3

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [net-next 1/4] igb: add VF trust infrastructure
  2018-03-05 18:16 [net-next 0/4][pull request] 1GbE Intel Wired LAN Driver Updates 2018-03-05 Jeff Kirsher
@ 2018-03-05 18:16 ` Jeff Kirsher
  2018-03-05 18:16 ` [net-next 2/4] igb: Do not call netif_device_detach() when PCIe link goes missing Jeff Kirsher
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 9+ messages in thread
From: Jeff Kirsher @ 2018-03-05 18:16 UTC (permalink / raw)
  To: davem; +Cc: Corinna Vinschen, netdev, nhorman, sassmann, jogreene,
	Jeff Kirsher

From: Corinna Vinschen <vinschen@redhat.com>

* Add a per-VF value to know if a VF is trusted, by default don't
  trust VFs.

* Implement netdev op to trust VFs (igb_ndo_set_vf_trust) and add
  trust status to ndo_get_vf_config output.

* Allow a trusted VF to change MAC and MAC filters even if MAC
  has been administratively set.

Signed-off-by: Corinna Vinschen <vinschen@redhat.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
 drivers/net/ethernet/intel/igb/igb.h      |  1 +
 drivers/net/ethernet/intel/igb/igb_main.c | 30 +++++++++++++++++++++++++++---
 2 files changed, 28 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/intel/igb/igb.h b/drivers/net/ethernet/intel/igb/igb.h
index 1c6b8d9176a8..55d6f17d5799 100644
--- a/drivers/net/ethernet/intel/igb/igb.h
+++ b/drivers/net/ethernet/intel/igb/igb.h
@@ -109,6 +109,7 @@ struct vf_data_storage {
 	u16 pf_qos;
 	u16 tx_rate;
 	bool spoofchk_enabled;
+	bool trusted;
 };
 
 /* Number of unicast MAC filters reserved for the PF in the RAR registers */
diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c
index b88fae785369..33f23ce99796 100644
--- a/drivers/net/ethernet/intel/igb/igb_main.c
+++ b/drivers/net/ethernet/intel/igb/igb_main.c
@@ -190,6 +190,8 @@ static int igb_ndo_set_vf_vlan(struct net_device *netdev,
 static int igb_ndo_set_vf_bw(struct net_device *, int, int, int);
 static int igb_ndo_set_vf_spoofchk(struct net_device *netdev, int vf,
 				   bool setting);
+static int igb_ndo_set_vf_trust(struct net_device *netdev, int vf,
+				bool setting);
 static int igb_ndo_get_vf_config(struct net_device *netdev, int vf,
 				 struct ifla_vf_info *ivi);
 static void igb_check_vf_rate_limit(struct igb_adapter *);
@@ -2527,6 +2529,7 @@ static const struct net_device_ops igb_netdev_ops = {
 	.ndo_set_vf_vlan	= igb_ndo_set_vf_vlan,
 	.ndo_set_vf_rate	= igb_ndo_set_vf_bw,
 	.ndo_set_vf_spoofchk	= igb_ndo_set_vf_spoofchk,
+	.ndo_set_vf_trust	= igb_ndo_set_vf_trust,
 	.ndo_get_vf_config	= igb_ndo_get_vf_config,
 #ifdef CONFIG_NET_POLL_CONTROLLER
 	.ndo_poll_controller	= igb_netpoll,
@@ -6383,6 +6386,9 @@ static int igb_vf_configure(struct igb_adapter *adapter, int vf)
 	/* By default spoof check is enabled for all VFs */
 	adapter->vf_data[vf].spoofchk_enabled = true;
 
+	/* By default VFs are not trusted */
+	adapter->vf_data[vf].trusted = false;
+
 	return 0;
 }
 
@@ -6940,13 +6946,13 @@ static int igb_set_vf_mac_filter(struct igb_adapter *adapter, const int vf,
 		}
 		break;
 	case E1000_VF_MAC_FILTER_ADD:
-		if (vf_data->flags & IGB_VF_FLAG_PF_SET_MAC) {
+		if ((vf_data->flags & IGB_VF_FLAG_PF_SET_MAC) &&
+		    !vf_data->trusted) {
 			dev_warn(&pdev->dev,
 				 "VF %d requested MAC filter but is administratively denied\n",
 				 vf);
 			return -EINVAL;
 		}
-
 		if (!is_valid_ether_addr(addr)) {
 			dev_warn(&pdev->dev,
 				 "VF %d attempted to set invalid MAC filter\n",
@@ -6998,7 +7004,8 @@ static int igb_set_vf_mac_addr(struct igb_adapter *adapter, u32 *msg, int vf)
 	int ret = 0;
 
 	if (!info) {
-		if (vf_data->flags & IGB_VF_FLAG_PF_SET_MAC) {
+		if ((vf_data->flags & IGB_VF_FLAG_PF_SET_MAC) &&
+		    !vf_data->trusted) {
 			dev_warn(&pdev->dev,
 				 "VF %d attempted to override administratively set MAC address\nReload the VF driver to resume operations\n",
 				 vf);
@@ -8934,6 +8941,22 @@ static int igb_ndo_set_vf_spoofchk(struct net_device *netdev, int vf,
 	return 0;
 }
 
+static int igb_ndo_set_vf_trust(struct net_device *netdev, int vf, bool setting)
+{
+	struct igb_adapter *adapter = netdev_priv(netdev);
+
+	if (vf >= adapter->vfs_allocated_count)
+		return -EINVAL;
+	if (adapter->vf_data[vf].trusted == setting)
+		return 0;
+
+	adapter->vf_data[vf].trusted = setting;
+
+	dev_info(&adapter->pdev->dev, "VF %u is %strusted\n",
+		 vf, setting ? "" : "not ");
+	return 0;
+}
+
 static int igb_ndo_get_vf_config(struct net_device *netdev,
 				 int vf, struct ifla_vf_info *ivi)
 {
@@ -8947,6 +8970,7 @@ static int igb_ndo_get_vf_config(struct net_device *netdev,
 	ivi->vlan = adapter->vf_data[vf].pf_vlan;
 	ivi->qos = adapter->vf_data[vf].pf_qos;
 	ivi->spoofchk = adapter->vf_data[vf].spoofchk_enabled;
+	ivi->trusted = adapter->vf_data[vf].trusted;
 	return 0;
 }
 
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [net-next 2/4] igb: Do not call netif_device_detach() when PCIe link goes missing
  2018-03-05 18:16 [net-next 0/4][pull request] 1GbE Intel Wired LAN Driver Updates 2018-03-05 Jeff Kirsher
  2018-03-05 18:16 ` [net-next 1/4] igb: add VF trust infrastructure Jeff Kirsher
@ 2018-03-05 18:16 ` Jeff Kirsher
  2018-03-05 18:16 ` [net-next 3/4] igb: Fix a test with HWTSTAMP_TX_ON Jeff Kirsher
  2018-03-05 18:16 ` [net-next 4/4] e1000e: allocate ring descriptors with dma_zalloc_coherent Jeff Kirsher
  3 siblings, 0 replies; 9+ messages in thread
From: Jeff Kirsher @ 2018-03-05 18:16 UTC (permalink / raw)
  To: davem; +Cc: Mika Westerberg, netdev, nhorman, sassmann, jogreene,
	Jeff Kirsher

From: Mika Westerberg <mika.westerberg@linux.intel.com>

When the driver notices that PCIe link is gone by reading 0xffffffff
from a register it clears hw->hw_addr and then calls netif_device_detach().
This happens when the PCIe device is physically unplugged for example
the user disconnected the Thunderbolt cable.

However, netif_device_detach() prevents netif_unregister() from bringing
the device down properly including tearing down MSI-X vectors. This
triggers following crash during the driver removal:

  igb 0000:0b:00.0 enp11s0f0: PCIe link lost, device now detached
  ------------[ cut here ]------------
  kernel BUG at drivers/pci/msi.c:352!
  invalid opcode: 0000 [#1] PREEMPT SMP PTI
  ...
  Call Trace:
   pci_disable_msix+0xc9/0xf0
   igb_reset_interrupt_capability+0x58/0x60 [igb]
   igb_remove+0x90/0x100 [igb]
   pci_device_remove+0x31/0xa0
   device_release_driver_internal+0x152/0x210
   pci_stop_bus_device+0x78/0xa0
   pci_stop_bus_device+0x38/0xa0
   pci_stop_bus_device+0x38/0xa0
   pci_stop_bus_device+0x26/0xa0
   pci_stop_bus_device+0x38/0xa0
   pci_stop_and_remove_bus_device+0x9/0x20
   trim_stale_devices+0xee/0x130
   ? _raw_spin_unlock_irqrestore+0xf/0x30
   trim_stale_devices+0x8f/0x130
   ? _raw_spin_unlock_irqrestore+0xf/0x30
   trim_stale_devices+0xa1/0x130
   ? get_slot_status+0x8b/0xc0
   acpiphp_check_bridge.part.7+0xf9/0x140
   acpiphp_hotplug_notify+0x170/0x1f0
   ...

To prevent the crash do not call netif_device_detach() in igb_rd32().
This should be fine because hw->hw_addr is set to NULL preventing future
hardware access of the now missing device.

Link: https://bugzilla.kernel.org/show_bug.cgi?id=198181
Reported-by: Ferenc Boldog <ferenc.boldog@gmail.com>
Reported-by: Nikolay Bogoychev <nheart@gmail.com>
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
 drivers/net/ethernet/intel/igb/igb_main.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c
index 33f23ce99796..229b72aab17d 100644
--- a/drivers/net/ethernet/intel/igb/igb_main.c
+++ b/drivers/net/ethernet/intel/igb/igb_main.c
@@ -776,8 +776,7 @@ u32 igb_rd32(struct e1000_hw *hw, u32 reg)
 	if (!(~value) && (!reg || !(~readl(hw_addr)))) {
 		struct net_device *netdev = igb->netdev;
 		hw->hw_addr = NULL;
-		netif_device_detach(netdev);
-		netdev_err(netdev, "PCIe link lost, device now detached\n");
+		netdev_err(netdev, "PCIe link lost\n");
 	}
 
 	return value;
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [net-next 3/4] igb: Fix a test with HWTSTAMP_TX_ON
  2018-03-05 18:16 [net-next 0/4][pull request] 1GbE Intel Wired LAN Driver Updates 2018-03-05 Jeff Kirsher
  2018-03-05 18:16 ` [net-next 1/4] igb: add VF trust infrastructure Jeff Kirsher
  2018-03-05 18:16 ` [net-next 2/4] igb: Do not call netif_device_detach() when PCIe link goes missing Jeff Kirsher
@ 2018-03-05 18:16 ` Jeff Kirsher
  2018-03-05 18:16 ` [net-next 4/4] e1000e: allocate ring descriptors with dma_zalloc_coherent Jeff Kirsher
  3 siblings, 0 replies; 9+ messages in thread
From: Jeff Kirsher @ 2018-03-05 18:16 UTC (permalink / raw)
  To: davem; +Cc: Christophe JAILLET, netdev, nhorman, sassmann, jogreene,
	Jeff Kirsher

From: Christophe JAILLET <christophe.jaillet@wanadoo.fr>

'HWTSTAMP_TX_ON' should be handled as a value, not as a bit mask.
The modified code should behave the same, because HWTSTAMP_TX_ON is 1
and no other possible values of 'tx_type' would match the test.
However, this is more future-proof, should other values be allowed one day.

See 'struct hwtstamp_config' in 'include/uapi/linux/net_tstamp.h'

This fixes a warning reported by smatch:
   igb_xmit_frame_ring() warn: bit shifter 'HWTSTAMP_TX_ON' used for logical '&'

Fixes: 26bd4e2db06be ("igb: protect TX timestamping from API misuse")
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
 drivers/net/ethernet/intel/igb/igb_main.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c
index 229b72aab17d..715bb32e6901 100644
--- a/drivers/net/ethernet/intel/igb/igb_main.c
+++ b/drivers/net/ethernet/intel/igb/igb_main.c
@@ -5749,7 +5749,7 @@ netdev_tx_t igb_xmit_frame_ring(struct sk_buff *skb,
 	if (unlikely(skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP)) {
 		struct igb_adapter *adapter = netdev_priv(tx_ring->netdev);
 
-		if (adapter->tstamp_config.tx_type & HWTSTAMP_TX_ON &&
+		if (adapter->tstamp_config.tx_type == HWTSTAMP_TX_ON &&
 		    !test_and_set_bit_lock(__IGB_PTP_TX_IN_PROGRESS,
 					   &adapter->state)) {
 			skb_shinfo(skb)->tx_flags |= SKBTX_IN_PROGRESS;
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [net-next 4/4] e1000e: allocate ring descriptors with dma_zalloc_coherent
  2018-03-05 18:16 [net-next 0/4][pull request] 1GbE Intel Wired LAN Driver Updates 2018-03-05 Jeff Kirsher
                   ` (2 preceding siblings ...)
  2018-03-05 18:16 ` [net-next 3/4] igb: Fix a test with HWTSTAMP_TX_ON Jeff Kirsher
@ 2018-03-05 18:16 ` Jeff Kirsher
  2018-03-05 18:23   ` Eric Dumazet
  3 siblings, 1 reply; 9+ messages in thread
From: Jeff Kirsher @ 2018-03-05 18:16 UTC (permalink / raw)
  To: davem
  Cc: Pierre-Yves Kerbrat, netdev, nhorman, sassmann, jogreene,
	Marius Gligor, Jeff Kirsher

From: Pierre-Yves Kerbrat <pkerbrat@kalray.eu>

Descriptor rings were not initialized at zero when allocated
When area contained garbage data, it caused skb_over_panic in
e1000_clean_rx_irq (if data had E1000_RXD_STAT_DD bit set)

This patch makes use of dma_zalloc_coherent to make sure the
ring is memset at 0 to prevent the area from containing garbage.

Following is the signature of the panic:
IODDR0@0.0: skbuff: skb_over_panic: text:80407b20 len:64010 put:64010 head:ab46d800 data:ab46d842 tail:0xab47d24c end:0xab46df40 dev:eth0
IODDR0@0.0: BUG: failure at net/core/skbuff.c:105/skb_panic()!
IODDR0@0.0: Kernel panic - not syncing: BUG!
IODDR0@0.0:
IODDR0@0.0: Process swapper/0 (pid: 0, threadinfo=81728000, task=8173cc00 ,cpu: 0)
IODDR0@0.0: SP = <815a1c0c>
IODDR0@0.0: Stack:      00000001
IODDR0@0.0: b2d89800 815e33ac
IODDR0@0.0: ea73c040 00000001
IODDR0@0.0: 60040003 0000fa0a
IODDR0@0.0: 00000002
IODDR0@0.0:
IODDR0@0.0: 804540c0 815a1c70
IODDR0@0.0: b2744000 602ac070
IODDR0@0.0: 815a1c44 b2d89800
IODDR0@0.0: 8173cc00 815a1c08
IODDR0@0.0:
IODDR0@0.0:     00000006
IODDR0@0.0: 815a1b50 00000000
IODDR0@0.0: 80079434 00000001
IODDR0@0.0: ab46df40 b2744000
IODDR0@0.0: b2d89800
IODDR0@0.0:
IODDR0@0.0: 0000fa0a 8045745c
IODDR0@0.0: 815a1c88 0000fa0a
IODDR0@0.0: 80407b20 b2789f80
IODDR0@0.0: 00000005 80407b20
IODDR0@0.0:
IODDR0@0.0:
IODDR0@0.0: Call Trace:
IODDR0@0.0: [<804540bc>] skb_panic+0xa4/0xa8
IODDR0@0.0: [<80079430>] console_unlock+0x2f8/0x6d0
IODDR0@0.0: [<80457458>] skb_put+0xa0/0xc0
IODDR0@0.0: [<80407b1c>] e1000_clean_rx_irq+0x2dc/0x3e8
IODDR0@0.0: [<80407b1c>] e1000_clean_rx_irq+0x2dc/0x3e8
IODDR0@0.0: [<804079c8>] e1000_clean_rx_irq+0x188/0x3e8
IODDR0@0.0: [<80407b1c>] e1000_clean_rx_irq+0x2dc/0x3e8
IODDR0@0.0: [<80468b48>] __dev_kfree_skb_any+0x88/0xa8
IODDR0@0.0: [<804101ac>] e1000e_poll+0x94/0x288
IODDR0@0.0: [<8046e9d4>] net_rx_action+0x19c/0x4e8
IODDR0@0.0:   ...
IODDR0@0.0: Maximum depth to print reached. Use kstack=<maximum_depth_to_print> To specify a custom value (where 0 means to display the full backtrace)
IODDR0@0.0: ---[ end Kernel panic - not syncing: BUG!

Signed-off-by: Pierre-Yves Kerbrat <pkerbrat@kalray.eu>
Signed-off-by: Marius Gligor <mgligor@kalray.eu>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Reviewed-by: Alexander Duyck <alexander.h.duyck@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
 drivers/net/ethernet/intel/e1000e/netdev.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c
index 1298b69f990b..26121edddc56 100644
--- a/drivers/net/ethernet/intel/e1000e/netdev.c
+++ b/drivers/net/ethernet/intel/e1000e/netdev.c
@@ -2333,7 +2333,7 @@ static int e1000_alloc_ring_dma(struct e1000_adapter *adapter,
 {
 	struct pci_dev *pdev = adapter->pdev;
 
-	ring->desc = dma_alloc_coherent(&pdev->dev, ring->size, &ring->dma,
+	ring->desc = dma_zalloc_coherent(&pdev->dev, ring->size, &ring->dma,
 					GFP_KERNEL);
 	if (!ring->desc)
 		return -ENOMEM;
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [net-next 4/4] e1000e: allocate ring descriptors with dma_zalloc_coherent
  2018-03-05 18:16 ` [net-next 4/4] e1000e: allocate ring descriptors with dma_zalloc_coherent Jeff Kirsher
@ 2018-03-05 18:23   ` Eric Dumazet
  2018-03-05 19:09     ` Jeff Kirsher
  0 siblings, 1 reply; 9+ messages in thread
From: Eric Dumazet @ 2018-03-05 18:23 UTC (permalink / raw)
  To: Jeff Kirsher, davem
  Cc: Pierre-Yves Kerbrat, netdev, nhorman, sassmann, jogreene,
	Marius Gligor

On Mon, 2018-03-05 at 10:16 -0800, Jeff Kirsher wrote:
> From: Pierre-Yves Kerbrat <pkerbrat@kalray.eu>
> 
> Descriptor rings were not initialized at zero when allocated
> When area contained garbage data, it caused skb_over_panic in
> e1000_clean_rx_irq (if data had E1000_RXD_STAT_DD bit set)
> 
> This patch makes use of dma_zalloc_coherent to make sure the
> ring is memset at 0 to prevent the area from containing garbage.
> 

This looks like a net candidate, fixing a bug, with 0 chance adding a
regression IMO.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [net-next 4/4] e1000e: allocate ring descriptors with dma_zalloc_coherent
  2018-03-05 18:23   ` Eric Dumazet
@ 2018-03-05 19:09     ` Jeff Kirsher
  2018-03-05 21:20       ` David Miller
  0 siblings, 1 reply; 9+ messages in thread
From: Jeff Kirsher @ 2018-03-05 19:09 UTC (permalink / raw)
  To: Eric Dumazet, davem
  Cc: Pierre-Yves Kerbrat, netdev, nhorman, sassmann, jogreene,
	Marius Gligor

[-- Attachment #1: Type: text/plain, Size: 711 bytes --]

On Mon, 2018-03-05 at 10:23 -0800, Eric Dumazet wrote:
> On Mon, 2018-03-05 at 10:16 -0800, Jeff Kirsher wrote:
> > From: Pierre-Yves Kerbrat <pkerbrat@kalray.eu>
> > 
> > Descriptor rings were not initialized at zero when allocated
> > When area contained garbage data, it caused skb_over_panic in
> > e1000_clean_rx_irq (if data had E1000_RXD_STAT_DD bit set)
> > 
> > This patch makes use of dma_zalloc_coherent to make sure the
> > ring is memset at 0 to prevent the area from containing garbage.
> > 
> 
> This looks like a net candidate, fixing a bug, with 0 chance adding a
> regression IMO.

I am fine with that.  Dave, let me know if you want me to re-submit
this change for net/stable.

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [net-next 4/4] e1000e: allocate ring descriptors with dma_zalloc_coherent
  2018-03-05 19:09     ` Jeff Kirsher
@ 2018-03-05 21:20       ` David Miller
  2018-03-05 21:42         ` Jeff Kirsher
  0 siblings, 1 reply; 9+ messages in thread
From: David Miller @ 2018-03-05 21:20 UTC (permalink / raw)
  To: jeffrey.t.kirsher
  Cc: eric.dumazet, pkerbrat, netdev, nhorman, sassmann, jogreene,
	mgligor

From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Date: Mon, 05 Mar 2018 11:09:29 -0800

> On Mon, 2018-03-05 at 10:23 -0800, Eric Dumazet wrote:
>> On Mon, 2018-03-05 at 10:16 -0800, Jeff Kirsher wrote:
>> > From: Pierre-Yves Kerbrat <pkerbrat@kalray.eu>
>> > 
>> > Descriptor rings were not initialized at zero when allocated
>> > When area contained garbage data, it caused skb_over_panic in
>> > e1000_clean_rx_irq (if data had E1000_RXD_STAT_DD bit set)
>> > 
>> > This patch makes use of dma_zalloc_coherent to make sure the
>> > ring is memset at 0 to prevent the area from containing garbage.
>> > 
>> 
>> This looks like a net candidate, fixing a bug, with 0 chance adding a
>> regression IMO.
> 
> I am fine with that.  Dave, let me know if you want me to re-submit
> this change for net/stable.

Yes, please add this patch to the net-queue pull request you also
sent today.

Thanks.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [net-next 4/4] e1000e: allocate ring descriptors with dma_zalloc_coherent
  2018-03-05 21:20       ` David Miller
@ 2018-03-05 21:42         ` Jeff Kirsher
  0 siblings, 0 replies; 9+ messages in thread
From: Jeff Kirsher @ 2018-03-05 21:42 UTC (permalink / raw)
  To: David Miller
  Cc: eric.dumazet, pkerbrat, netdev, nhorman, sassmann, jogreene,
	mgligor

[-- Attachment #1: Type: text/plain, Size: 1060 bytes --]

On Mon, 2018-03-05 at 16:20 -0500, David Miller wrote:
> From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
> Date: Mon, 05 Mar 2018 11:09:29 -0800
> 
> > On Mon, 2018-03-05 at 10:23 -0800, Eric Dumazet wrote:
> > > On Mon, 2018-03-05 at 10:16 -0800, Jeff Kirsher wrote:
> > > > From: Pierre-Yves Kerbrat <pkerbrat@kalray.eu>
> > > > 
> > > > Descriptor rings were not initialized at zero when allocated
> > > > When area contained garbage data, it caused skb_over_panic in
> > > > e1000_clean_rx_irq (if data had E1000_RXD_STAT_DD bit set)
> > > > 
> > > > This patch makes use of dma_zalloc_coherent to make sure the
> > > > ring is memset at 0 to prevent the area from containing
> > > > garbage.
> > > > 
> > > 
> > > This looks like a net candidate, fixing a bug, with 0 chance
> > > adding a
> > > regression IMO.
> > 
> > I am fine with that.  Dave, let me know if you want me to re-submit
> > this change for net/stable.
> 
> Yes, please add this patch to the net-queue pull request you also
> sent today.
> 
> Thanks.

Done.

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2018-03-05 21:41 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-03-05 18:16 [net-next 0/4][pull request] 1GbE Intel Wired LAN Driver Updates 2018-03-05 Jeff Kirsher
2018-03-05 18:16 ` [net-next 1/4] igb: add VF trust infrastructure Jeff Kirsher
2018-03-05 18:16 ` [net-next 2/4] igb: Do not call netif_device_detach() when PCIe link goes missing Jeff Kirsher
2018-03-05 18:16 ` [net-next 3/4] igb: Fix a test with HWTSTAMP_TX_ON Jeff Kirsher
2018-03-05 18:16 ` [net-next 4/4] e1000e: allocate ring descriptors with dma_zalloc_coherent Jeff Kirsher
2018-03-05 18:23   ` Eric Dumazet
2018-03-05 19:09     ` Jeff Kirsher
2018-03-05 21:20       ` David Miller
2018-03-05 21:42         ` Jeff Kirsher

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).