One of the basic rules of kernel-module development is that modules can
only access symbols (functions and data structures) that have been
explicitly exported. Even then, many symbols are restricted so that only
modules with a GPL-compatible license can access them. It turns out,
though, that there is a readily available workaround that makes it easy for
a module to access any symbol it wants. That workaround seems likely to be
removed soon despite some possible inconvenience for some out-of-tree
users; the reason why that is happening turns out to be relatively
interesting.
Source: LWN.net – [$] Unexporting kallsyms_lookup_name()