Patchwork 2.6.27.18: bnx2/tg3: BUG: "scheduling while atomic" trying toifenslave a second interface to my bond

login
register
mail settings
Submitter Jay Vosburgh
Date May 4, 2009, 7:03 p.m.
Message ID <4086.1241463817@death.nxdomain.ibm.com>
Download mbox | patch
Permalink /patch/26854/
State Accepted
Delegated to: David Miller
Headers show

Comments

Jay Vosburgh - May 4, 2009, 7:03 p.m.
Paul Smith <paul@mad-scientist.net> wrote:

>Hi Jay/David/etc.;
>
>This patch is critical for me to properly use mode 6 (balance-alb)
>bonding; I assume it will be needed for others as well.  I haven't
>checked to see if it's still necessary in 2.6.29/2.6.30, but I didn't
>notice it going into the latest 2.6.27.22, released today.
>
>Is this still unofficial?  Is there an official patch on the horizon?

	David, please apply and queue for -stable:

Subject: [PATCH] bonding: fix alb mode locking regression 

	Fix locking issue in alb MAC address management; removed
incorrect locking and replaced with correct locking.  This bug was
introduced in commit:

commit 059fe7a578fba5bbb0fdc0365bfcf6218fa25eb0
Author: Jay Vosburgh <fubar@us.ibm.com>
Date:   Wed Oct 17 17:37:49 2007 -0700

    bonding: Convert locks to _bh, rework alb locking for new locking

	Bug reported by Paul Smith <paul@mad-scientist.net>, who also
tested the fix.

Signed-off-by: Jay Vosburgh <fubar@us.ibm.com>



--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
David Miller - May 4, 2009, 7:06 p.m.
From: Jay Vosburgh <fubar@us.ibm.com>
Date: Mon, 04 May 2009 12:03:37 -0700

> Paul Smith <paul@mad-scientist.net> wrote:
> 
>>Hi Jay/David/etc.;
>>
>>This patch is critical for me to properly use mode 6 (balance-alb)
>>bonding; I assume it will be needed for others as well.  I haven't
>>checked to see if it's still necessary in 2.6.29/2.6.30, but I didn't
>>notice it going into the latest 2.6.27.22, released today.
>>
>>Is this still unofficial?  Is there an official patch on the horizon?
> 
> 	David, please apply and queue for -stable:

Greg just posted that there will be no further 2.6.27.x -stable
releases after the one he just made.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Paul Smith - May 4, 2009, 10:38 p.m.
On Mon, 2009-05-04 at 12:06 -0700, David Miller wrote:
> Greg just posted that there will be no further 2.6.27.x -stable
> releases after the one he just made.

Really?  That seems odd.  Everything I heard for the last 7 months or
so, even as late as last month, seemed to imply that 2.6.27 was going to
be the next long-term supported kernel, taking over from 2.6.16, and
that it would be supported for "years".

Maybe Adrian is taking over 2.6.27.x maintenance from Greg?

Was this posted on lkml?

--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
David Miller - May 4, 2009, 10:44 p.m.
From: Paul Smith <paul@mad-scientist.net>
Date: Mon, 04 May 2009 18:38:14 -0400

> On Mon, 2009-05-04 at 12:06 -0700, David Miller wrote:
>> Greg just posted that there will be no further 2.6.27.x -stable
>> releases after the one he just made.
> 
> Really?  That seems odd.  Everything I heard for the last 7 months or
> so, even as late as last month, seemed to imply that 2.6.27 was going to
> be the next long-term supported kernel, taking over from 2.6.16, and
> that it would be supported for "years".

The reality of the situation is that someone has to do the work.

> Maybe Adrian is taking over 2.6.27.x maintenance from Greg?

I have no idea.

> Was this posted on lkml?

Yes.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Jay Vosburgh - May 4, 2009, 11 p.m.
David Miller <davem@davemloft.net> wrote:

>From: Jay Vosburgh <fubar@us.ibm.com>
>Date: Mon, 04 May 2009 12:03:37 -0700
>
>> Paul Smith <paul@mad-scientist.net> wrote:
>> 
>>>Hi Jay/David/etc.;
>>>
>>>This patch is critical for me to properly use mode 6 (balance-alb)
>>>bonding; I assume it will be needed for others as well.  I haven't
>>>checked to see if it's still necessary in 2.6.29/2.6.30, but I didn't
>>>notice it going into the latest 2.6.27.22, released today.
>>>
>>>Is this still unofficial?  Is there an official patch on the horizon?
>> 
>> 	David, please apply and queue for -stable:
>
>Greg just posted that there will be no further 2.6.27.x -stable
>releases after the one he just made.

	Regardless of the -stable situation, the patch is still needed
for the current mainline (sorry if that wasn't clear).  I checked it
against the current net-2.6 and net-next-2.6 trees, and it should apply
to either one.

	-J

---
	-Jay Vosburgh, IBM Linux Technology Center, fubar@us.ibm.com
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
David Miller - May 4, 2009, 11:04 p.m.
From: Jay Vosburgh <fubar@us.ibm.com>
Date: Mon, 04 May 2009 16:00:51 -0700

> 	Regardless of the -stable situation, the patch is still needed
> for the current mainline (sorry if that wasn't clear).  I checked it
> against the current net-2.6 and net-next-2.6 trees, and it should apply
> to either one.

I didn't realize that, ok I'll unmark it in patchwork and
get to it soon.

Thanks.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Ben Hutchings - May 4, 2009, 11:05 p.m.
On Mon, 2009-05-04 at 12:06 -0700, David Miller wrote:
> From: Jay Vosburgh <fubar@us.ibm.com>
> Date: Mon, 04 May 2009 12:03:37 -0700
> 
> > Paul Smith <paul@mad-scientist.net> wrote:
> > 
> >>Hi Jay/David/etc.;
> >>
> >>This patch is critical for me to properly use mode 6 (balance-alb)
> >>bonding; I assume it will be needed for others as well.  I haven't
> >>checked to see if it's still necessary in 2.6.29/2.6.30, but I didn't
> >>notice it going into the latest 2.6.27.22, released today.
> >>
> >>Is this still unofficial?  Is there an official patch on the horizon?
> > 
> > 	David, please apply and queue for -stable:
> 
> Greg just posted that there will be no further 2.6.27.x -stable
> releases after the one he just made.

It's 2.6.28.x that he's dropping now
<http://article.gmane.org/gmane.linux.kernel/831202>, not .27.x - he'll
have to support the latter for years in SLES 11 anyway.

Ben.
David Miller - May 4, 2009, 11:12 p.m.
From: Ben Hutchings <bhutchings@solarflare.com>
Date: Tue, 05 May 2009 00:05:12 +0100

> On Mon, 2009-05-04 at 12:06 -0700, David Miller wrote:
>> From: Jay Vosburgh <fubar@us.ibm.com>
>> Date: Mon, 04 May 2009 12:03:37 -0700
>> 
>> > Paul Smith <paul@mad-scientist.net> wrote:
>> > 
>> >>Hi Jay/David/etc.;
>> >>
>> >>This patch is critical for me to properly use mode 6 (balance-alb)
>> >>bonding; I assume it will be needed for others as well.  I haven't
>> >>checked to see if it's still necessary in 2.6.29/2.6.30, but I didn't
>> >>notice it going into the latest 2.6.27.22, released today.
>> >>
>> >>Is this still unofficial?  Is there an official patch on the horizon?
>> > 
>> > 	David, please apply and queue for -stable:
>> 
>> Greg just posted that there will be no further 2.6.27.x -stable
>> releases after the one he just made.
> 
> It's 2.6.28.x that he's dropping now
> <http://article.gmane.org/gmane.linux.kernel/831202>, not .27.x - he'll
> have to support the latter for years in SLES 11 anyway.

Yes he just corrected me about this in private email.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Paul Smith - May 5, 2009, 12:59 a.m.
Whew!  I was a bit worried there :-)

Can we re-queue this for 2.6.27-stable then?  I've got the patch already
building in my tree but it'd be nice to get it there by default going
forward.

Cheers!
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
David Miller - May 5, 2009, 4:32 a.m.
From: Jay Vosburgh <fubar@us.ibm.com>
Date: Mon, 04 May 2009 12:03:37 -0700

> 	David, please apply and queue for -stable:

Done.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

diff --git a/drivers/net/bonding/bond_alb.c b/drivers/net/bonding/bond_alb.c
index 553a899..46d312b 100644
--- a/drivers/net/bonding/bond_alb.c
+++ b/drivers/net/bonding/bond_alb.c
@@ -1706,10 +1706,8 @@  void bond_alb_handle_active_change(struct bonding *bond, struct slave *new_slave
  * Called with RTNL
  */
 int bond_alb_set_mac_address(struct net_device *bond_dev, void *addr)
-	__releases(&bond->curr_slave_lock)
-	__releases(&bond->lock)
 	__acquires(&bond->lock)
-	__acquires(&bond->curr_slave_lock)
+	__releases(&bond->lock)
 {
 	struct bonding *bond = netdev_priv(bond_dev);
 	struct sockaddr *sa = addr;
@@ -1745,9 +1743,6 @@  int bond_alb_set_mac_address(struct net_device *bond_dev, void *addr)
 		}
 	}
 
-	write_unlock_bh(&bond->curr_slave_lock);
-	read_unlock(&bond->lock);
-
 	if (swap_slave) {
 		alb_swap_mac_addr(bond, swap_slave, bond->curr_active_slave);
 		alb_fasten_mac_swap(bond, swap_slave, bond->curr_active_slave);
@@ -1755,16 +1750,15 @@  int bond_alb_set_mac_address(struct net_device *bond_dev, void *addr)
 		alb_set_slave_mac_addr(bond->curr_active_slave, bond_dev->dev_addr,
 				       bond->alb_info.rlb_enabled);
 
+		read_lock(&bond->lock);
 		alb_send_learning_packets(bond->curr_active_slave, bond_dev->dev_addr);
 		if (bond->alb_info.rlb_enabled) {
 			/* inform clients mac address has changed */
 			rlb_req_update_slave_clients(bond, bond->curr_active_slave);
 		}
+		read_unlock(&bond->lock);
 	}
 
-	read_lock(&bond->lock);
-	write_lock_bh(&bond->curr_slave_lock);
-
 	return 0;
 }