2003-02-21 20:47:03

by Sudharsan Vijayaraghavan

[permalink] [raw]
Subject: Accessibility of variables between kernel modules

Hi,

Am using 2.4 kernel . In this release i find that all non-static symbols
( functions/variables) defined in one kernel module are exported by default
to other kernel modules .
If we would use EXPORT_NO_SYMBOLS this exporting of symbols is prevented .
However we can export one of the symbols in one module using EXPORT_SYMBOL
and then prevent the export of others by immediately calling EXPORT_NO_SYMBOLS.

We can even use EXPORT_SYMBOL_GPL to export a symbol from a given module ,
these could be accessed by
only those modules using MODULE_LICENSE() and are GPL compatible.

However my requirement is quite different. It is as follows.

I have two kernel modules A and B. Is it possible that the variables in
kernel module A should only be visible to kernel module B and no other
kernel modules in the system.
If so please help me out with some explanation.
Really appreciate your help regarding the same.

Thanks in advance,
Sudharsan.


2003-02-21 20:59:18

by Brian Gerst

[permalink] [raw]
Subject: Re: Accessibility of variables between kernel modules

Sudharsan Vijayaraghavan wrote:
> Hi,
>
> Am using 2.4 kernel . In this release i find that all non-static symbols
> ( functions/variables) defined in one kernel module are exported by
> default to other kernel modules .
> If we would use EXPORT_NO_SYMBOLS this exporting of symbols is prevented
> . However we can export one of the symbols in one module using
> EXPORT_SYMBOL and then prevent the export of others by immediately
> calling EXPORT_NO_SYMBOLS.
>
> We can even use EXPORT_SYMBOL_GPL to export a symbol from a given module
> , these could be accessed by
> only those modules using MODULE_LICENSE() and are GPL compatible.
>
> However my requirement is quite different. It is as follows.
>
> I have two kernel modules A and B. Is it possible that the variables in
> kernel module A should only be visible to kernel module B and no other
> kernel modules in the system.
> If so please help me out with some explanation.
> Really appreciate your help regarding the same.
>
> Thanks in advance,
> Sudharsan.

Exported symbols are always global. If you want to make sure there are
no symbol conflicts the variable names must be unique. Other than the
GPL symbols, there is no way of preventing other modules from using
exported symbols.

--
Brian Gerst