Messages in this thread | | | Date | Wed, 2 Apr 2008 22:53:53 +0300 | From | "Pekka Enberg" <> | Subject | Re: kmemcheck caught read from freed memory (cfq_free_io_context) |
| |
Hi Paul,
On Wed, Apr 02, 2008 at 07:32:26PM +0300, Pekka J Enberg wrote: > > Well, maybe we can add two new states: RCU_FREED and RCU_VALIDATED? The > > object is flagged with the first one as soon as an object is handed over > > to kmem_cache_free() and the latter needs to hook to the validation phase > > of RCU (how is that done btw?). Then kmemcheck could even give a better > > error message: "RCU-freed object used without validation." > > > > And with delayed free for kmemcheck we discussed before, we'd hold on to > > the objects long enough to actually see these error conditions.
On Wed, Apr 2, 2008 at 9:23 PM, Paul E. McKenney <paulmck@linux.vnet.ibm.com> wrote: > Well, one approach would be to add an rcu_head to the kmem_cache > structure, along with a flag stating that the rcu_head is in use. I hope > that there is a better approach, as this introduces a lock roundtrip > into kmemcheck_slab_free(). Is there a better place to put the rcu_head? > Perhaps into the per-CPU allocator? But then we have to track which > CPU has which mark pending, and there are only so many bits in a byte, > as the SGI guys would be quick to point out
I suppose you haven't actually run kmemcheck on your machine? We're taking a page fault for _every_ memory access so a lock round-trip in the SLAB_RCU case is probably not that bad performance-wise :-).
| |