Thread (10 messages) 10 messages, 4 authors, 2005-02-24

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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help