Re: Frequent Oops on Shutdown 2.6.10
From: Herbert Xu <herbert@gondor.apana.org.au>
Date: 2005-02-22 10:15:26
On Tue, Feb 22, 2005 at 08:57:19PM +1100, Herbert Xu wrote:
YOSHIFUJI Hideaki / ???? [off-list ref] wrote:quoted
In article [ref] (at Mon, 21 Feb 2005 16:22:41 +0900 (JST)), YOSHIFUJI Hideaki / ???? [off-list ref] says:quoted
[IPV6] Don't remove dev_snmp6 procfs entry until all users gone.Sorry, but I don't see how this patch explains the oops the people saw.
OK, I think I see what you were trying to fix now. Unfortunately I think this patch doesn't quite cure the problem. First of all you can't sleep in snmp6_unregister_dev so semaphores are out. More importantly, the race is still on. Here is what happens: CPU0 CPU1 ifdown eth0 ... ifup eth0 snmp6_register_dev adds proc entry in6_dev_finish_destroy snmp6_unregister_dev deletes new proc entry The next ifdown may fail because snmp6_unregister_dev will retrieve the name from a proc entry that's already been deleted. I see two solutions: 1) Unregister the proc entry earlier. In other words, do it in addrconf_ifdown. Since this is highly serialised it means that we can't add the new proc entry before the old proc entry has been deleted. 2) Fix procfs so that we delete by pointer instead of name. This makes sense from a semantic pointer of view. However, for this particular instance it means that we may have two "eth0" entries for as long as the old idev entry sticks around. Cheers, -- Visit Openswan at http://www.openswan.org/ Email: Herbert Xu ~{PmV>HI~} [off-list ref] Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt