Messages in this thread | | | Date | Wed, 07 Mar 2007 14:38:24 +0000 | From | Paulo Marques <> | Subject | Re: [PATCH 2.6.21-rc1] Extend print_symbol capability TRY #3 |
| |
Robert Peterson wrote: >[...] > @@ -47,6 +52,11 @@ static inline const char *kallsyms_lookup(unsigned > long addr, > return NULL; > } > > +static inline void sprint_symbol(char *buffer, unsigned long addr) > +{ > + return; > +}
I'm really sorry for not replying sooner (I've been really busy), but this function still doesn't seem right.
If someone does something like:
> void my_function(unsigned long addr) > { > char buffer[KSYM_SYMBOL_LEN]; > > sprint_symbol(buffer, addr); > ... > // use buffer to print somewhere > ... > }
which seems like a perfectly natural thing to do, it might just oops the kernel if CONFIG_KALLSYMS is not set, because the buffer will be left uninitialized.
That is why I suggested to change it to something like "*buffer = '\0'" instead.
The really nice solution IMHO, would be to remove the print_symbol and sprint_symbol functions from the the "#ifdef CONFIG_KALLSYMS" and just let them be available even in a not CONFIG_KALLSYMS kernel.
Since kallsyms_lookup is already #ifdef'ed to something sane, sprint_symbol will just print out the symbol address in that case, but it is better than not printing anything at all.
-- Paulo Marques - www.grupopie.com
"Very funny Scotty. Now beam up my clothes." - 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/
| |