On Mon, Jul 26, 2004 at 05:14:36PM +0200, Gilles Chanteperdrix wrote:
>  > I've just noticed a namespace pollution. A linux-2.6.x kernel (2.6.7
>  > here) exports by default a symbol called 'sem_init'.
>  > 
>  > # lsmod
>  > Module                  Size  Used by
>  > adeos                  26208  0
>  > 3c59x                  36296  0
>  > # cat /proc/kallsyms |grep sem_init
>  > c0381ab0 t sem_init
>  > 
>  > This collides with the sem_init symbol from the posix skin.
> 
> Ok. I just wonder how insmod happens to work then... And I do not see a
> simple fix : the only thing which comes to my mind is the dreaded
> "posix_override.h", which I had to use in user-space to avoid
> pollution.

I think there is no reason to panic. It seems that the lowercase 't'
means, that it's a internal text (=code) symbol. A uppercase 'T' means
global symbol. See manpage of 'nm'. This must be new for linux-2.6.x

If I load the posix.ko all symbols are lowercase 't', probably due to
missing EXPORT_SYMBOL(). This also explains why I cannot load a modul
using this symbols. (I got undef kernel symbols)

After adding EXPORT_SYMBOLS all works fine...

hth - Marc

-- 
#!/bin/sh
set - `type $0` 'tr "[a-zA-Z]" "[n-za-mN-ZA-M]"';while [ "$2" != "" ];do \
shift;done; echo 'frq -a -rc '`echo "$0"| $1 `'>$UBZR/.`rpub signature|'`\
echo $1|$1`'`;rpub "Jr ner fvtangher bs obet. Erfvfgnapr vf shgvyr!"'|$1|sh

Reply via email to