Re: [patch 0/6] rcu head debugobjects

From: Paul E. McKenney
Date: Sat Mar 27 2010 - 19:43:28 EST


On Sat, Mar 27, 2010 at 07:20:24PM -0400, Mathieu Desnoyers wrote:
> * Mathieu Desnoyers (mathieu.desnoyers@xxxxxxxxxxxx) wrote:
> > * Paul E. McKenney (paulmck@xxxxxxxxxxxxxxxxxx) wrote:
> [...]
> > > o Patch 6/6: Would it be possible to use the object_is_on_stack()
> > > function defined in include/linux/sched.h instead of passing
> > > in the flag on_stack to bdi_work_init()? It looks like
> > > fs/fs-writeback.c already includes include/linux/sched.h, so
> > > shouldn't be a problem from a #include-hell viewpoint.
> >
> > Wow, that's cool! We learn about exciting internal API functions every day,
> > isn't life great ? I will definitely change the fs-writeback.c code to make use
> > of it.
> >
> > We might event want to go further. A similar scheme could be used for the
> > rcu_head debugobject activation fixup. Basically, I need a way to distinguish
> > between:
> >
> > A) objects on stack and allocated objects
> > and
> > B) objects statically initialized
> >
> > So either we use something resembling:
> >
> > if (object_is_on_stack() || object_is_allocated())
> >
> > or
> >
> > if (object_is_static())
> >
> > I am not aware of the proper API members to do that though.
> >
>
> Something close to "object_is_static()" would be "kernel_text_address()", but it
> only considers the text section addresses. I'd need something that would be
> broader than that, containing all core kernel and module bss and data sections.
>
> Still looking...

I was actually feeling pretty good about remembering object_is_on_stack()
and finding it again. ;-)

I am not seeing anything the identifies data or bss, and in any case,
other situations such as per-CPU, __read_mostly, and who knows what all
else would also need to be handled. So in the short term, my guess would
be that it would be best to provide the three functions (possibly renaming
them as noted above), but to leave the responsibility for figuring out
which to invoke with the caller. Always happy to be proven wrong, of
course!

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