Benjamin Thery wrote:
Denis V. Lunev wrote:
Daniel Lezcano wrote:
Oh, by the way, I forgot something important you spotted with the list
protected by the mutex.

When looking at ipv6/fib_hash.c with Benjamin, we need to browse the
network namespaces list for the garbage collecting, but we are in an
interrupt handler, so I can not use rtnl_lock.
where exactly....

Actually, it is in net/ipv6/ip6_fib.c, in fib6_clean_all().

fib6_clean_all() is called by fib6_run_gc() handler of the ip6_fib_timer. If we don't want to have one such timer per net namespace, in fib6_clean_all() we have to go through all net to clean their own
fib_table_hash (using for_each_net() protected by rtnl_lock).

The locking in mainstream is different with NETNS49.

I have proposed to add a dev_base_lock to protect namespace list for atomic context to be in sync with rtnl usage.

May be we should introduce an additional one. I also do not see other way for that place. May be you can copy my approach with generations for IPv6 code. I'll send a new version in a minute.

Regards,
        Den

_______________________________________________
Devel mailing list
[email protected]
https://openvz.org/mailman/listinfo/devel

Reply via email to