On Thu, Mar 13, 2008 at 01:16:46PM +0200, Dan Shimshoni wrote:
> Dan,
> 
>   - It could be that you encountered (or "discovered") a kernel BUG
> with the locking mechansim of bridge devices.
> 
>   - What I would suggest is the following:
> 
>   - First, If you can give more details  (kernel version / disto) it would 
> help.
> 
>   - Second, if you can post this mailing list the scripts you are
> running (for adding/deleting the tun device) and describe
> the environment (how you exactly start and configure the tun devices,
> etc). that cause this crash it will really help.
> 
> I, for one , will happily try to test it on two Linux machines to see
> if it crash , and I believe that there will be others.

Thanks. But it's rather hard to reproduce.
It happens quite often in our complex environment, but it did not appear when I
tried to brctl addif/delif in from simple scripts. If I come up with something
that's simple to post and reproduces the problem, you'll be the first to know.

I'm using CentOS 5, 2.6.18-8.el5 x86_64 kernel, with bridge-utils-1.1-2.

Do someone here care to take a look at net/bridge/br_if.c's br_add_if()?
I cannot really read kernel code; please enlighten me. I see there

        list_add_rcu(&p->list, &br->port_list);

but I did not spot where br->port_list is locked. I worry because

/**
 * list_add_rcu - add a new entry to rcu-protected list
 * @new: new entry to be added
 * @head: list head to add it after
 *
 * Insert a new entry after the specified head.
 * This is good for implementing stacks.
 *
 * The caller must take whatever precautions are necessary
 * (such as holding appropriate locks) to avoid racing
 * with another list-mutation primitive, such as list_add_rcu()
 * or list_del_rcu(), running on this same list.
 * However, it is perfectly legal to run concurrently with
 * the _rcu list-traversal primitives, such as
 * list_for_each_entry_rcu().
 */

Thanks,
   Dan.

=================================================================
To unsubscribe, send mail to [EMAIL PROTECTED] with
the word "unsubscribe" in the message body, e.g., run the command
echo unsubscribe | mail [EMAIL PROTECTED]

Reply via email to