All of lore.kernel.org
 help / color / mirror / Atom feed
* [net] ixgbe: fix possible deadlock in ixgbe_service_task()
@ 2019-08-05 20:04 Jeff Kirsher
  2019-08-06 21:51 ` David Miller
  0 siblings, 1 reply; 4+ messages in thread
From: Jeff Kirsher @ 2019-08-05 20:04 UTC (permalink / raw)
  To: davem; +Cc: Taehee Yoo, netdev, nhorman, sassmann, Andrew Bowers, Jeff Kirsher

From: Taehee Yoo <ap420073@gmail.com>

ixgbe_service_task() calls unregister_netdev() under rtnl_lock().
But unregister_netdev() internally calls rtnl_lock().
So deadlock would occur.

Fixes: 59dd45d550c5 ("ixgbe: firmware recovery mode")
Signed-off-by: Taehee Yoo <ap420073@gmail.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
 drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
index cbaf712d6529..3386e752e458 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
@@ -7898,9 +7898,7 @@ static void ixgbe_service_task(struct work_struct *work)
 	}
 	if (ixgbe_check_fw_error(adapter)) {
 		if (!test_bit(__IXGBE_DOWN, &adapter->state)) {
-			rtnl_lock();
 			unregister_netdev(adapter->netdev);
-			rtnl_unlock();
 		}
 		ixgbe_service_event_complete(adapter);
 		return;
-- 
2.21.0


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

* Re: [net] ixgbe: fix possible deadlock in ixgbe_service_task()
  2019-08-05 20:04 [net] ixgbe: fix possible deadlock in ixgbe_service_task() Jeff Kirsher
@ 2019-08-06 21:51 ` David Miller
  2019-08-07  6:08   ` Taehee Yoo
  0 siblings, 1 reply; 4+ messages in thread
From: David Miller @ 2019-08-06 21:51 UTC (permalink / raw)
  To: jeffrey.t.kirsher; +Cc: ap420073, netdev, nhorman, sassmann, andrewx.bowers

From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Date: Mon,  5 Aug 2019 13:04:03 -0700

> diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
> index cbaf712d6529..3386e752e458 100644
> --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
> +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
> @@ -7898,9 +7898,7 @@ static void ixgbe_service_task(struct work_struct *work)
>  	}
>  	if (ixgbe_check_fw_error(adapter)) {
>  		if (!test_bit(__IXGBE_DOWN, &adapter->state)) {
> -			rtnl_lock();
>  			unregister_netdev(adapter->netdev);
> -			rtnl_unlock();
>  		}

Please remove the (now unnecessary) curly braces for this basic block.

Thank you.

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

* Re: [net] ixgbe: fix possible deadlock in ixgbe_service_task()
  2019-08-06 21:51 ` David Miller
@ 2019-08-07  6:08   ` Taehee Yoo
  2019-08-08 16:36     ` Jeff Kirsher
  0 siblings, 1 reply; 4+ messages in thread
From: Taehee Yoo @ 2019-08-07  6:08 UTC (permalink / raw)
  To: David Miller; +Cc: jeffrey.t.kirsher, Netdev, nhorman, sassmann, andrewx.bowers

On Wed, 7 Aug 2019 at 08:36, David Miller <davem@davemloft.net> wrote:
>

Hi David
Thank you for the review!

> From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
> Date: Mon,  5 Aug 2019 13:04:03 -0700
>
> > diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
> > index cbaf712d6529..3386e752e458 100644
> > --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
> > +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
> > @@ -7898,9 +7898,7 @@ static void ixgbe_service_task(struct work_struct *work)
> >       }
> >       if (ixgbe_check_fw_error(adapter)) {
> >               if (!test_bit(__IXGBE_DOWN, &adapter->state)) {
> > -                     rtnl_lock();
> >                       unregister_netdev(adapter->netdev);
> > -                     rtnl_unlock();
> >               }
>
> Please remove the (now unnecessary) curly braces for this basic block.
>

I will send a v2 patch.
Thank you!

> Thank you.

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

* Re: [net] ixgbe: fix possible deadlock in ixgbe_service_task()
  2019-08-07  6:08   ` Taehee Yoo
@ 2019-08-08 16:36     ` Jeff Kirsher
  0 siblings, 0 replies; 4+ messages in thread
From: Jeff Kirsher @ 2019-08-08 16:36 UTC (permalink / raw)
  To: Taehee Yoo, David Miller; +Cc: Netdev, nhorman, sassmann, andrewx.bowers

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

On Wed, 2019-08-07 at 15:08 +0900, Taehee Yoo wrote:
> On Wed, 7 Aug 2019 at 08:36, David Miller <davem@davemloft.net>
> wrote:
> 
> Hi David
> Thank you for the review!
> 
> > From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
> > Date: Mon,  5 Aug 2019 13:04:03 -0700
> > 
> > > diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
> > > b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
> > > index cbaf712d6529..3386e752e458 100644
> > > --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
> > > +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
> > > @@ -7898,9 +7898,7 @@ static void ixgbe_service_task(struct
> > > work_struct *work)
> > >        }
> > >        if (ixgbe_check_fw_error(adapter)) {
> > >                if (!test_bit(__IXGBE_DOWN, &adapter->state)) {
> > > -                     rtnl_lock();
> > >                        unregister_netdev(adapter->netdev);
> > > -                     rtnl_unlock();
> > >                }
> > 
> > Please remove the (now unnecessary) curly braces for this basic
> > block.
> > 
> 
> I will send a v2 patch.
> Thank you!

I have already created a v2 on your behalf Taechee and will submit to
Dave here shortly.

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

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

end of thread, other threads:[~2019-08-08 16:36 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-08-05 20:04 [net] ixgbe: fix possible deadlock in ixgbe_service_task() Jeff Kirsher
2019-08-06 21:51 ` David Miller
2019-08-07  6:08   ` Taehee Yoo
2019-08-08 16:36     ` Jeff Kirsher

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.