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