All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andy Gospodarek <andy@greyhouse.net>
To: Krzysztof Oledzki <olel@ans.pl>
Cc: Jay Vosburgh <fubar@us.ibm.com>,
	netdev@vger.kernel.org, Jeff Garzik <jgarzik@pobox.com>,
	David Miller <davem@davemloft.net>,
	Andy Gospodarek <andy@greyhouse.net>
Subject: Re: [PATCH 0/3] bonding: 3 fixes for 2.6.24
Date: Tue, 8 Jan 2008 14:17:06 -0500	[thread overview]
Message-ID: <20080108191706.GD8728@gospo.usersys.redhat.com> (raw)
In-Reply-To: <Pine.LNX.4.64.0801081949290.1135@bizon.gios.gov.pl>

On Tue, Jan 08, 2008 at 07:50:22PM +0100, Krzysztof Oledzki wrote:
> 
> 
> On Mon, 7 Jan 2008, Jay Vosburgh wrote:
> 
> >	Following are three fixes to fix locking problems and
> >silence locking-related warnings in the current 2.6.24-rc.
> >
> >	patch 1: fix locking in sysfs primary/active selection
> >
> >	Call core network functions with expected locks to
> >eliminate potential deadlock and silence warnings.
> >
> >	patch 2: fix ASSERT_RTNL that produces spurious warnings
> >
> >	Relocate ASSERT_RTNL to remove a false warning; after patch,
> >ASSERT is located in code that holds only RTNL (additional locks were
> >causing the ASSERT to trip)
> >
> >	patch 3: fix locking during alb failover and slave removal
> >
> >	Fix all call paths into alb_fasten_mac_swap to hold only RTNL.
> >Eliminates deadlock and silences warnings.
> >
> >	Patches are against the current netdev-2.6#upstream branch.
> >
> >	Please apply for 2.6.24.
> 
> 2.6.24-rc7 + patches #1, #2, #3:
> 
> bonding: bond0: setting mode to active-backup (1).
> bonding: bond0: Setting MII monitoring interval to 100.
> ADDRCONF(NETDEV_UP): bond0: link is not ready
> bonding: bond0: Adding slave eth0.
> e1000: eth0: e1000_watchdog: NIC Link is Up 1000 Mbps Full Duplex, Flow 
> Control: RX/TX
> bonding: bond0: making interface eth0 the new active one.
> bonding: bond0: first active interface up!
> bonding: bond0: enslaving eth0 as an active interface with an up link.
> bonding: bond0: Adding slave eth1.
> ADDRCONF(NETDEV_CHANGE): bond0: link becomes ready
> 
> =========================================================
> [ INFO: possible irq lock inversion dependency detected ]
> 2.6.24-rc7 #1
> ---------------------------------------------------------
> events/0/9 just changed the state of lock:
>  (&mc->mca_lock){-+..}, at: [<c041258e>] mld_ifc_timer_expire+0x130/0x1fb
> but this lock took another, soft-read-irq-unsafe lock in the past:
>  (&bond->lock){-.--}
> 
> and interrupts could create inverse lock ordering between them.
> 
> 

Jay's patches will not fix this issue.  I think something like this did
it for me, but as I mentioned to Jay in the last thread, I'm not
convinced it doesn't violate some of the locking expectations we have.

diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
index 423298c..3c6619a 100644
--- a/drivers/net/bonding/bond_main.c
+++ b/drivers/net/bonding/bond_main.c
@@ -3915,7 +3915,7 @@ static void bond_set_multicast_list(struct net_device *bond_dev)
 	struct bonding *bond = bond_dev->priv;
 	struct dev_mc_list *dmi;
 
-	write_lock_bh(&bond->lock);
+	read_lock(&bond->lock);
 
 	/*
 	 * Do promisc before checking multicast_mode
@@ -3957,7 +3957,7 @@ static void bond_set_multicast_list(struct net_device *bond_dev)
 	bond_mc_list_destroy(bond);
 	bond_mc_list_copy(bond_dev->mc_list, bond, GFP_ATOMIC);
 
-	write_unlock_bh(&bond->lock);
+	read_unlock(&bond->lock);
 }
 
 /*



  reply	other threads:[~2008-01-08 19:17 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-01-08  1:56 [PATCH 0/3] bonding: 3 fixes for 2.6.24 Jay Vosburgh
2008-01-08  1:56 ` [PATCH 1/3] bonding: fix locking in sysfs primary/active selection Jay Vosburgh
2008-01-08  1:56   ` [PATCH 2/3] bonding: fix ASSERT_RTNL that produces spurious warnings Jay Vosburgh
2008-01-08  1:57     ` [PATCH 3/3] bonding: fix locking during alb failover and slave removal Jay Vosburgh
2008-01-08 18:50 ` [PATCH 0/3] bonding: 3 fixes for 2.6.24 Krzysztof Oledzki
2008-01-08 19:17   ` Andy Gospodarek [this message]
2008-01-08 20:28     ` Jay Vosburgh
2008-01-09  6:08     ` Herbert Xu
2008-01-08 19:30   ` Jay Vosburgh
2008-01-09  6:35     ` Krzysztof Oledzki
2008-01-09  7:58       ` Jay Vosburgh
2008-01-09  9:36         ` Krzysztof Oledzki
2008-01-09 15:27         ` Andy Gospodarek
2008-01-09 17:54           ` Jay Vosburgh
2008-01-09 20:17             ` Andy Gospodarek
2008-01-09 22:05               ` Herbert Xu
2008-01-09 23:19                 ` Jay Vosburgh
2008-01-10  0:58                   ` Herbert Xu
2008-01-10 14:51                     ` Andy Gospodarek
2008-01-10 20:36                       ` Herbert Xu
2008-01-10 20:50                         ` Jay Vosburgh
2008-01-10 21:03                           ` Andy Gospodarek
2008-01-10 21:05                             ` Herbert Xu
2008-01-11  1:06                               ` Jay Vosburgh
2008-01-11  4:55                                 ` Herbert Xu
2008-01-10 20:45                       ` Jay Vosburgh
2008-01-12 10:53               ` Krzysztof Oledzki
2008-01-12 17:56                 ` Jay Vosburgh
2008-01-13  0:19                   ` Herbert Xu
2008-01-14 22:15                   ` Krzysztof Oledzki

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=20080108191706.GD8728@gospo.usersys.redhat.com \
    --to=andy@greyhouse.net \
    --cc=davem@davemloft.net \
    --cc=fubar@us.ibm.com \
    --cc=jgarzik@pobox.com \
    --cc=netdev@vger.kernel.org \
    --cc=olel@ans.pl \
    /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 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.