public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Paulo Marques <pmarques@grupopie.com>
To: Robin Getz <rgetz@blackfin.uclinux.org>
Cc: Rusty Russell <rusty@rustcorp.com.au>, linux-kernel@vger.kernel.org
Subject: Re: managing kallsyms_addresses
Date: Thu, 31 Jan 2008 17:27:25 +0000	[thread overview]
Message-ID: <47A204FD.70607@grupopie.com> (raw)
In-Reply-To: <200801311148.18859.rgetz@blackfin.uclinux.org>

Robin Getz wrote:
> When the kernel needs to find out what symbol is at a specific address, it 
> uses kallsyms_lookup() This seems to work pretty well - almost.
> 
> The problem is today, we don't to remove the symbols from the init section 
> when the init section is freed. There is invalid data in kallsyms_addresses.
> [...]
> There would be two solutions:
>  - when freeing the init section, remove all the init labels from the 
> kallsyms_addresses, and resort/pack it.

This should be doable, but to be worth it, we would need to use 
different structures for the init symbols, that would be stored in 
__initdata.

Then, ideally we would have separate functions in the __init section to 
look up symbols in those structures that would only be called until we 
released the init sections.

On the plus side, this would avoid the "repacking" the kallsyms 
structures to remove the init labels.

>  - if the init section is unloaded, have is_kernel_inittext always return 0.

This is by far the simplest solution. I even STR a patch floating around 
to do this, by I can't seem to locate it now... :(

> I assume that similar things need to be handled for module init too, but I 
> have not run into that yet.

It seems that at least the last solution should be easy enough to 
implement there.

> Thoughts?

I think that the simplest solution (the second one) is probably the best 
for now.

One thing that did cross my mind though, is stuff like lockdep.

If we run a locking sequence that is called from init code, and later a 
different locking sequence is used when we already freed init data, how 
can the debug information show the names of the functions that generated 
the previous locking sequence?

It seems that the only "correct" approach would be to store a "before 
freeing init sections" flag together with the function pointer, and then 
have a kallsyms interface that could receive this flag to know where to 
look.

In that case, the first solution can not be used at all (because we need 
to keep the init symbols anyway) and the second solution could be simply 
implemented by having a default value for the flag that is the "current 
state" for that flag...

-- 
Paulo Marques - www.grupopie.com

"There cannot be a crisis today; my schedule is already full."

  reply	other threads:[~2008-01-31 17:27 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-01-31 16:48 managing kallsyms_addresses Robin Getz
2008-01-31 17:27 ` Paulo Marques [this message]
2008-01-31 22:44   ` Robin Getz

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=47A204FD.70607@grupopie.com \
    --to=pmarques@grupopie.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rgetz@blackfin.uclinux.org \
    --cc=rusty@rustcorp.com.au \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox