LWN.net Logo

[0/11] SYSCTL: Use RCU to avoid races with string sysctls

From:  Andi Kleen <andi@firstfloor.org>
To:  linux-kernel@vger.kernel.org, paulmck@linux.vnet.ibm.com, ebiederm@xmission.com
Subject:  [PATCH] [0/11] SYSCTL: Use RCU to avoid races with string sysctls
Date:  Mon, 21 Dec 2009 02:20:21 +0100 (CET)
Message-ID:  <20091221220.243954235@firstfloor.org>
Archive-link:  Article, Thread


With BKL-less sysctls most of the writable string sysctls are racy. There
is no locking on the reader side, so a reader could see an inconsistent
string or worse miss the terminating null and walk of beyond it.

This patch kit adds a new "rcu string" variant to avoid these 
problems and convers the racy users. One the writer side the strings are 
always copied to new memory and the readers use rcu_read_lock()
to get a stable view. For readers who access the string over
sleeps the reader copies the string. 

This is all hidden in a new generic "rcu_string" ADT which can be also 
used for other purposes.

This finally implements all the letters in RCU, most other users
leave out the 'C'.

I also fixed the zone order list sysctl to use a mutex to avoid
racing with itself. 

I left some obscure users in architectures (sparc, mips) alone and audited
all of the others. The sparc reboot_cmd one has references to asm files
which I didn't want to touch and the mips variant seemd just too obscure.

All the others are not racy.

-Andi
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Copyright © 2009, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds