Re: Bridge deadlock in 2.4.33

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





on 30/10/2006 19:28 Stephen Hemminger said the following:
On Sun, 29 Oct 2006 19:29:27 +0200
"Lior Dotan" <liodot@xxxxxxxxx> wrote:

Hi,

I hope this is the right list for this.
I recently upgraded from 2.4.20 to 2.4.33 both with the ebtables patch
running an SMP kernel on a UP box and now I have the following problem:
My box has some rules in ebtables and iptables and a bridge with 3
ports. When I try to remove eth2, which is connected to other bridges,
from it the box hangs. I used KDB to catch the trace and got this:

nf_hook_slow+0x75
[bridge]br_send_bpdu+0x19f
[bridge]br_send_config_bpdu+0x189
[bridge]br_transmit_config+0xca
[bridge]br_config_bpdu_generation+0x45
[bridge]br_become_root_bridge+0x48
[bridge]br_stp_disable_port+0x9a
[bridge]__br_del_if+0x3e
[bridge]br_del_if+0x47
[bridge]br_ioctl_device+0x59
[bridge]br_ioctl+0x66
[bridge]br_dev_do_ioctl+0x91
dev_ifsioc+0x420
dev_ioctl+0x262
inet_ioctl+0x1d3
sock_ioctl+0x3f
sys_ioctl+0x104
system_call+0x33

I traced the problem to nf_hook_slow() trying to get a read lock on
BR_NETPROTO_LOCK but br_del_if() already gets a write lock earlier in
the stack.
I also checked and in 2.4.20 br_send_bpdu() called dev_queue_xmit()
directly and now it goes through netfilter.
I wrote this small patch just to see what will happen:

NACK fix it correctly (now spin_islocked() calls) or upgrade to 2.6



Stephen Hemminger <shemminger@xxxxxxxx>

Thanks for the reply, but what is the correct way of fixing this?
-
To unsubscribe from this list: send the line "unsubscribe linux-net" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux 802.1Q VLAN]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Git]     [Bugtraq]     [Yosemite News and Information]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux PCI]     [Linux Admin]     [Samba]

  Powered by Linux