On Wed, 03 Apr 2013 19:08:45 -0700, Arlie Stephens said: > - I've got a linked list, with entries occassionally added from normal > contexts. > - Entries are never deleted from the list. This is already busted - you *will* eventually OOM the system this way. > This would be simple, except that the routines which READ the list may > get called from panic(), or inside an oops, or from an NMI. It's > important that they succeed in doing their jobs in that case, even if > they managed to interrupt a list addition in progress. At that point, you need to be *really* specific on what the semantics of "succeed" really are. In particular, do they merely need to succeed at reading a single specific entry, or the entire list? You should also be clear on why panic() and oops need to poke the list (hint - if you're in panic(), you're there because the kernel is already convinced things are too screwed up to continue, so why should you trust your list enough to walk across it during panic()?) > 1) Use an rculist, and hope that it really does cover this > situation. That's probably safe/sufficient, as long as the read semantics of an RCU-protected region are acceptable. In particular, check the behavior of when an update happens, compared to when it becomes visible to readers.
Attachment:
pgpLVV6KHXSuH.pgp
Description: PGP signature
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies