mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-06 10:00:17 +00:00
modpost: check forbidden MODULE_IMPORT_NS("module:") at compile time
Explicitly adding MODULE_IMPORT_NS("module:...") is not allowed.
Currently, this is only checked at run time. That is, when such a
module is loaded, an error message like the following is shown:
foo: module tries to import module namespace: module:bar
Obviously, checking this at compile time improves usability.
In such a case, modpost will report the following error at compile time:
ERROR: modpost: foo: explicitly importing namespace "module:bar" is not allowed.
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
This commit is contained in:
@@ -28,6 +28,8 @@
|
|||||||
#include "modpost.h"
|
#include "modpost.h"
|
||||||
#include "../../include/linux/license.h"
|
#include "../../include/linux/license.h"
|
||||||
|
|
||||||
|
#define MODULE_NS_PREFIX "module:"
|
||||||
|
|
||||||
static bool module_enabled;
|
static bool module_enabled;
|
||||||
/* Are we using CONFIG_MODVERSIONS? */
|
/* Are we using CONFIG_MODVERSIONS? */
|
||||||
static bool modversions;
|
static bool modversions;
|
||||||
@@ -1597,8 +1599,13 @@ static void read_symbols(const char *modname)
|
|||||||
|
|
||||||
for (namespace = get_modinfo(&info, "import_ns");
|
for (namespace = get_modinfo(&info, "import_ns");
|
||||||
namespace;
|
namespace;
|
||||||
namespace = get_next_modinfo(&info, "import_ns", namespace))
|
namespace = get_next_modinfo(&info, "import_ns", namespace)) {
|
||||||
|
if (strstarts(namespace, MODULE_NS_PREFIX))
|
||||||
|
error("%s: explicitly importing namespace \"%s\" is not allowed.\n",
|
||||||
|
mod->name, namespace);
|
||||||
|
|
||||||
add_namespace(&mod->imported_namespaces, namespace);
|
add_namespace(&mod->imported_namespaces, namespace);
|
||||||
|
}
|
||||||
|
|
||||||
if (!get_modinfo(&info, "description"))
|
if (!get_modinfo(&info, "description"))
|
||||||
warn("missing MODULE_DESCRIPTION() in %s\n", modname);
|
warn("missing MODULE_DESCRIPTION() in %s\n", modname);
|
||||||
|
|||||||
Reference in New Issue
Block a user