netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] cxgb4vf: fix crash due to manipulating queues before registration
@ 2010-10-28 20:16 Casey Leedom
  2010-10-28 20:21 ` David Miller
  0 siblings, 1 reply; 7+ messages in thread
From: Casey Leedom @ 2010-10-28 20:16 UTC (permalink / raw)
  To: davem; +Cc: netdev, Casey Leedom

Before commit "net: allocate tx queues in register_netdevice"
netif_tx_stop_all_queues and related functions could be used between
device allocation and registration but now only after registration.
cxgb4 has such a call before registration and crashes now.  Move it
after register_netdev.

Signed-off-by: Casey Leedom <leedom@chelsio.com>
---
 drivers/net/cxgb4vf/cxgb4vf_main.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/net/cxgb4vf/cxgb4vf_main.c b/drivers/net/cxgb4vf/cxgb4vf_main.c
index 555ecc5..b9d92a5 100644
--- a/drivers/net/cxgb4vf/cxgb4vf_main.c
+++ b/drivers/net/cxgb4vf/cxgb4vf_main.c
@@ -2600,7 +2600,6 @@ static int __devinit cxgb4vf_pci_probe(struct pci_dev *pdev,
 		pi->xact_addr_filt = -1;
 		pi->rx_offload = RX_CSO;
 		netif_carrier_off(netdev);
-		netif_tx_stop_all_queues(netdev);
 		netdev->irq = pdev->irq;
 
 		netdev->features = (NETIF_F_SG | NETIF_F_TSO | NETIF_F_TSO6 |
@@ -2661,6 +2660,7 @@ static int __devinit cxgb4vf_pci_probe(struct pci_dev *pdev,
 			continue;
 		}
 
+		netif_tx_stop_all_queues(netdev);
 		set_bit(pidx, &adapter->registered_device_map);
 	}
 	if (adapter->registered_device_map == 0) {
-- 
1.7.0.4


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

* Re: [PATCH] cxgb4vf: fix crash due to manipulating queues before registration
  2010-10-28 20:16 [PATCH] cxgb4vf: fix crash due to manipulating queues before registration Casey Leedom
@ 2010-10-28 20:21 ` David Miller
  2010-10-28 21:16   ` Casey Leedom
  2010-10-29  7:36   ` Dimitrios Michailidis
  0 siblings, 2 replies; 7+ messages in thread
From: David Miller @ 2010-10-28 20:21 UTC (permalink / raw)
  To: leedom; +Cc: netdev

From: Casey Leedom <leedom@chelsio.com>
Date: Thu, 28 Oct 2010 13:16:47 -0700

> Before commit "net: allocate tx queues in register_netdevice"
> netif_tx_stop_all_queues and related functions could be used between
> device allocation and registration but now only after registration.
> cxgb4 has such a call before registration and crashes now.  Move it
> after register_netdev.
> 
> Signed-off-by: Casey Leedom <leedom@chelsio.com>

Why are you manipulating the queue at all here?

The queue state is "don't care" at this point in time,
and has no meaning until ->open() is invoked.

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

* Re: [PATCH] cxgb4vf: fix crash due to manipulating queues before registration
  2010-10-28 20:21 ` David Miller
@ 2010-10-28 21:16   ` Casey Leedom
  2010-10-29  7:36   ` Dimitrios Michailidis
  1 sibling, 0 replies; 7+ messages in thread
From: Casey Leedom @ 2010-10-28 21:16 UTC (permalink / raw)
  To: David Miller; +Cc: netdev

On Oct 28, 2010, at 1:21 PM, David Miller wrote:

> From: Casey Leedom <leedom@chelsio.com>
> Date: Thu, 28 Oct 2010 13:16:47 -0700
> 
>> Before commit "net: allocate tx queues in register_netdevice"
>> netif_tx_stop_all_queues and related functions could be used between
>> device allocation and registration but now only after registration.
>> cxgb4 has such a call before registration and crashes now.  Move it
>> after register_netdev.
>> 
>> Signed-off-by: Casey Leedom <leedom@chelsio.com>
> 
> Why are you manipulating the queue at all here?
> 
> The queue state is "don't care" at this point in time,
> and has no meaning until ->open() is invoked.

True.  This driver was modeled on cxgb4, we wanted to make sure that the cxgb4 crash fix is ported to cxgb4vf.  Let me sync up with the other Chelsio maintainers.

Casey


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

* RE: [PATCH] cxgb4vf: fix crash due to manipulating queues before registration
  2010-10-28 20:21 ` David Miller
  2010-10-28 21:16   ` Casey Leedom
@ 2010-10-29  7:36   ` Dimitrios Michailidis
  2010-10-29 20:05     ` David Miller
  1 sibling, 1 reply; 7+ messages in thread
From: Dimitrios Michailidis @ 2010-10-29  7:36 UTC (permalink / raw)
  To: David Miller, Casey Leedom; +Cc: netdev

> > Before commit "net: allocate tx queues in register_netdevice"
> > netif_tx_stop_all_queues and related functions could be used between
> > device allocation and registration but now only after registration.
> > cxgb4 has such a call before registration and crashes now.  Move it
> > after register_netdev.
> >
> > Signed-off-by: Casey Leedom <leedom@chelsio.com>
> 
> Why are you manipulating the queue at all here?
> 
> The queue state is "don't care" at this point in time,
> and has no meaning until ->open() is invoked.

The reason for the call at its initial pre register_netdev location was
an attempt to make the queues have the same state at the time of each
open.  Without it at the first open __QUEUE_STATE_XOFF is not set due to
0-initialization but at subsequent opens it is set because close stops
the queues.  I agree however that this disparity is not functionally
significant.  Further, I believe moving the call after register_netdev
is buggy as open can be called after registration and it can clash with
the queue stopping.  It seems then that these netif_tx_stop_all_queues
calls have to go now.


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

* Re: [PATCH] cxgb4vf: fix crash due to manipulating queues before registration
  2010-10-29  7:36   ` Dimitrios Michailidis
@ 2010-10-29 20:05     ` David Miller
  2010-11-01 21:02       ` Divy Le Ray
  0 siblings, 1 reply; 7+ messages in thread
From: David Miller @ 2010-10-29 20:05 UTC (permalink / raw)
  To: dm; +Cc: leedom, netdev

From: "Dimitrios Michailidis" <dm@chelsio.com>
Date: Fri, 29 Oct 2010 00:36:22 -0700

> Further, I believe moving the call after register_netdev is buggy as
> open can be called after registration and it can clash with the
> queue stopping.  It seems then that these netif_tx_stop_all_queues
> calls have to go now.

This is a good explanation of why no driver should be touching the
queue state before the first ->open() call.

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

* Re: [PATCH] cxgb4vf: fix crash due to manipulating queues before registration
  2010-10-29 20:05     ` David Miller
@ 2010-11-01 21:02       ` Divy Le Ray
  2010-11-01 21:06         ` David Miller
  0 siblings, 1 reply; 7+ messages in thread
From: Divy Le Ray @ 2010-11-01 21:02 UTC (permalink / raw)
  To: David Miller; +Cc: dm, leedom, netdev

On 10/29/2010 01:05 PM, David Miller wrote:
> From: "Dimitrios Michailidis"<dm@chelsio.com>
> Date: Fri, 29 Oct 2010 00:36:22 -0700
>
>> Further, I believe moving the call after register_netdev is buggy as
>> open can be called after registration and it can clash with the
>> queue stopping.  It seems then that these netif_tx_stop_all_queues
>> calls have to go now.
> This is a good explanation of why no driver should be touching the
> queue state before the first ->open() call.

I'm sending a series of 3 patches fixing cxgb3, cxgb4, cxgb4vf.

Cheers,
Divy

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

* Re: [PATCH] cxgb4vf: fix crash due to manipulating queues before registration
  2010-11-01 21:02       ` Divy Le Ray
@ 2010-11-01 21:06         ` David Miller
  0 siblings, 0 replies; 7+ messages in thread
From: David Miller @ 2010-11-01 21:06 UTC (permalink / raw)
  To: divy; +Cc: dm, leedom, netdev

From: Divy Le Ray <divy@chelsio.com>
Date: Mon, 01 Nov 2010 14:02:56 -0700

> On 10/29/2010 01:05 PM, David Miller wrote:
>> From: "Dimitrios Michailidis"<dm@chelsio.com>
>> Date: Fri, 29 Oct 2010 00:36:22 -0700
>>
>>> Further, I believe moving the call after register_netdev is buggy as
>>> open can be called after registration and it can clash with the
>>> queue stopping.  It seems then that these netif_tx_stop_all_queues
>>> calls have to go now.
>> This is a good explanation of why no driver should be touching the
>> queue state before the first ->open() call.
> 
> I'm sending a series of 3 patches fixing cxgb3, cxgb4, cxgb4vf.

Thank you.

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

end of thread, other threads:[~2010-11-01 21:06 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-10-28 20:16 [PATCH] cxgb4vf: fix crash due to manipulating queues before registration Casey Leedom
2010-10-28 20:21 ` David Miller
2010-10-28 21:16   ` Casey Leedom
2010-10-29  7:36   ` Dimitrios Michailidis
2010-10-29 20:05     ` David Miller
2010-11-01 21:02       ` Divy Le Ray
2010-11-01 21:06         ` David Miller

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).