The get_module_symbol and put_module_symbol functions do not work when
the kernel is compiled with CONFIG_MODVERSIONS. They are a third
mechanism for modules to pass data to each other, the other two are
exported symbols which are resolved at insmod time or via registration
Because xxx_module_symbol does not work with CONFIG_MODVERSIONS, is
only used by two areas of code (MTD and DRM/AGP) and because Linus
thinks there are no good uses for get_module_symbol[*], this patch
replaces xxx_module_symbol with inter_module registration routines.
These routines should only be used for small amounts of data between
two objects. If you need to pass data between more than two objects
then you should seriously think about coding specific registration
functions for those objects instead of overloading generic functions.
The only reason these functions exist is to avoid bloating the kernel
with individual registration functions just for a couple of objects.
The patch hits module.[ch], I already had several outstanding bug fixes
and IA64 module support in my tree, waiting for the code freeze to be
lifted. Since module.[ch] was being hit anyway, I flushed most of my
patch list as part of this patch, these changes are already working in
the IA64 port.
The patch is 66K unzipped, 14K zipped, a bit too big for l-k. Get it
from ftp://ftp.ocs.com.au/pub/2.4.0-test10-pre6-module-symbol.gz. It
fits 2.4.0-test10 with some offsets, although I have not tested the
patch on 2.4.0-test10. MTD says it looks OK, no response from DRM/AGP
after a week, my testing shows it appears to work on DRM/AGP.
Any comments before it goes to Linus?
[email protected] said:
> Any comments before it goes to Linus?
I'd prefer to update MTD separately if and when the inter_module_xxx
support gets into both 2.2 and 2.4.
Could you first provide a patch which adds this support - when it's merged
into both 2.2 and 2.4 I'll update the MTD code without needing to keep
backwards-compatibility, and then we can remove get_module_symbol() altogether.