All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jarek Poplawski <jarkao2@o2.pl>
To: Ben Greear <greearb@candelatech.com>
Cc: netdev@vger.kernel.org, David Miller <davem@davemloft.net>
Subject: [PATCH] igmp: spin_lock_bh in timer (Re: BUG: soft lockup detected on CPU#0!)
Date: Fri, 22 Dec 2006 08:13:08 +0100	[thread overview]
Message-ID: <20061222071308.GA1791@ff.dom.local> (raw)
In-Reply-To: <45889C53.8000307@candelatech.com>

On 20-12-2006 03:13, Ben Greear wrote:
> This is from 2.6.18.2 kernel with my patch set.  The MAC-VLANs are in 
> active use.
>  From the backtrace, I am thinking this might be a generic problem, 
> however.
> 
> Any ideas about what this could be?  It seems to be reproducible every 
> day or
> two, but no known way to make it happen quickly...
> 
> Kernel is SMP, PREEMPT.
> 
> 
> Dec 19 04:49:33 localhost kernel: BUG: soft lockup detected on CPU#0!
> Dec 19 04:49:33 localhost kernel:  [<78104252>] show_trace+0x12/0x20
> Dec 19 04:49:33 localhost kernel:  [<78104929>] dump_stack+0x19/0x20
> Dec 19 04:49:33 localhost kernel:  [<7814c88b>] softlockup_tick+0x9b/0xd0
> Dec 19 04:49:33 localhost kernel:  [<7812a992>] run_local_timers+0x12/0x20
> Dec 19 04:49:33 localhost kernel:  [<7812ac08>] 
> update_process_times+0x38/0x80
> Dec 19 04:49:33 localhost kernel:  [<78112796>] 
> smp_apic_timer_interrupt+0x66/0x70
> Dec 19 04:49:33 localhost kernel:  [<78103baa>] 
> apic_timer_interrupt+0x2a/0x30
> Dec 19 04:49:33 localhost kernel:  [<78354e8c>] _read_lock+0x3c/0x50
> Dec 19 04:49:33 localhost kernel:  [<78331f42>] ip_check_mc+0x22/0xb0
> Dec 19 04:49:33 localhost kernel:  [<783068bf>] ip_route_input+0x17f/0xef0
> Dec 19 04:49:33 localhost kernel:  [<78309c59>] ip_rcv+0x349/0x580

Hello,

This log isn't probably enough to tell with certainty
which lock is to blame. We can see it's taken from
some timer during ip_check_mc() but this
read_lock(&in_dev->mc_list_lock) doesn't seem to
be used in timers for writing.
Maybe if you would wait a few minutes or tried
SysRq a oops could tell more.

Looking at igmp.c I've found one suspicious place
and here is a patch proposal included, but it may
be not your case. Anyway you could also try to
change this above mentioned read_lock and
read_unlock to _bh versions - maybe I missed
something.

If it doesn't help, I hope lockdep will be more
precise when you'll upgrade to 2.6.19 or higher.
 
Regards,
Jarek P.
---
[PATCH] igmp: spin_lock_bh in timer

igmp_timer_expire() uses spin_lock(&im->lock)
but this lock is also taken by other igmp timers,
so it should be changed to bh version.

Signed-off-by: Jarek Poplawski <jarkao2@o2.pl>
---

diff -Nurp linux-2.6.20-rc1-/net/ipv4/igmp.c linux-2.6.20-rc1/net/ipv4/igmp.c
--- linux-2.6.20-rc1-/net/ipv4/igmp.c	2006-12-16 20:37:18.000000000 +0100
+++ linux-2.6.20-rc1/net/ipv4/igmp.c	2006-12-21 22:57:30.000000000 +0100
@@ -727,7 +727,7 @@ static void igmp_timer_expire(unsigned l
 	struct ip_mc_list *im=(struct ip_mc_list *)data;
 	struct in_device *in_dev = im->interface;
 
-	spin_lock(&im->lock);
+	spin_lock_bh(&im->lock);
 	im->tm_running=0;
 
 	if (im->unsolicit_count) {
@@ -735,7 +735,7 @@ static void igmp_timer_expire(unsigned l
 		igmp_start_timer(im, IGMP_Unsolicited_Report_Interval);
 	}
 	im->reporter = 1;
-	spin_unlock(&im->lock);
+	spin_unlock_bh(&im->lock);
 
 	if (IGMP_V1_SEEN(in_dev))
 		igmp_send_report(in_dev, im, IGMP_HOST_MEMBERSHIP_REPORT);

  reply	other threads:[~2006-12-22  7:36 UTC|newest]

Thread overview: 64+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-12-20  2:13 BUG: soft lockup detected on CPU#0! (2.6.18.2 plus hacks) Ben Greear
2006-12-22  7:13 ` Jarek Poplawski [this message]
2006-12-22  7:42   ` [PATCH] igmp: spin_lock_bh in timer (Re: BUG: soft lockup detected on CPU#0!) Jarek Poplawski
2006-12-22 13:47     ` Ben Greear
2006-12-22 14:05     ` Ben Greear
2006-12-27  8:24       ` Jarek Poplawski
2006-12-27 16:16         ` Ben Greear
2006-12-28 12:56           ` Jarek Poplawski
2006-12-29 11:16           ` Jarek Poplawski
2006-12-22  9:48   ` Jarek Poplawski
2006-12-22 11:16   ` Herbert Xu
2006-12-22 12:53     ` Jarek Poplawski
2007-01-02  5:00 ` BUG: soft lockup detected on CPU#0! (2.6.18.2 plus hacks) Ben Greear
2007-01-02  7:39   ` Jarek Poplawski
2007-01-02  8:23     ` Jarek Poplawski
2007-01-02  9:23       ` Jarek Poplawski
2007-01-02 23:35   ` David Stevens
2007-01-02 23:43     ` Ben Greear
2007-01-03  8:07     ` Jarek Poplawski
2007-01-03  8:28       ` Jarek Poplawski
2007-01-03 16:53         ` Ben Greear
2007-01-03 22:14   ` David Stevens
2007-01-03 23:13     ` David Stevens
2007-01-03 23:35       ` Ben Greear
2007-01-03 23:56         ` David Stevens
2007-01-04  0:30       ` Herbert Xu
2007-01-04  1:02         ` Ben Greear
2007-01-04  1:14           ` Herbert Xu
2007-01-04  5:41           ` David Stevens
2007-01-04  5:34         ` David Stevens
2007-01-04  6:26           ` Herbert Xu
2007-01-04  8:03             ` Jarek Poplawski
2007-01-04  8:29               ` Herbert Xu
2007-01-04  8:50                 ` Jarek Poplawski
2007-01-04 10:27                   ` Herbert Xu
2007-01-04 11:04                     ` Jarek Poplawski
2007-01-04 17:04                       ` Ben Greear
2007-01-05 13:55                         ` Jarek Poplawski
2007-01-04 20:33             ` David Miller
2007-01-05  6:38               ` Jarek Poplawski
2007-01-05  9:38                 ` Herbert Xu
2007-01-05 11:19                   ` [PATCH] devinet: inetdev_init out label moved after RCU assignment Jarek Poplawski
2007-01-05 11:23                     ` Herbert Xu
2007-01-05 11:37                       ` Jarek Poplawski
2007-01-09 22:38                       ` David Miller
2007-01-05 19:52                     ` David Stevens
2007-01-05 20:33               ` BUG: soft lockup detected on CPU#0! (2.6.18.2 plus hacks) Ben Greear
2007-01-05 20:34                 ` David Miller
2007-01-08  6:53                 ` Jarek Poplawski
2007-01-08 16:57                   ` Ben Greear
2007-01-08 18:03                     ` Stephen Hemminger
2007-01-09  8:10                       ` Jarek Poplawski
2007-01-10  9:04                         ` Jarek Poplawski
2007-01-10 12:50                           ` Jarek Poplawski
2007-01-10 20:01                             ` Stephen Hemminger
2007-01-11  7:24                               ` Jarek Poplawski
2007-01-11  7:40                                 ` David Miller
2007-01-11  8:29                                   ` Jarek Poplawski
2007-01-11  8:35                                     ` Jarek Poplawski
2007-01-11  8:39                                       ` Jarek Poplawski
2007-01-11  9:27                                         ` David Miller
2007-01-11 11:09                                           ` Jarek Poplawski
2007-01-11 17:42                                             ` RCU info Stephen Hemminger
2007-01-12 12:19                                               ` Jarek Poplawski

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=20061222071308.GA1791@ff.dom.local \
    --to=jarkao2@o2.pl \
    --cc=davem@davemloft.net \
    --cc=greearb@candelatech.com \
    --cc=netdev@vger.kernel.org \
    /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.