static
int
check_modinfo(struct module
*
mod, struct load_info
*
info,
int
fla
gs)
{
const char
*
modmagic
=
get_modinfo(info,
"vermagic"
);
int
err;
if
(flags & MODULE_INIT_IGNORE_VERMAGIC)
modmagic
=
NULL;
/
*
This
is
allowed: modprobe
-
-
force will invalidate it.
*
/
if
(!modmagic) {
err
=
try_to_force_load(mod,
"bad vermagic"
);
if
(err)
return
err;
}
else
if
(!same_magic(modmagic, vermagic, info
-
>index.vers)) {
pr_err(
"%s: version magic '%s' should be '%s'\n"
,
mod
-
>name, modmagic, vermagic);
/
/
return
-
ENOEXEC; 【这里注释掉】
}
if
(!get_modinfo(info,
"intree"
))
add_taint_module(mod, TAINT_OOT_MODULE, LOCKDEP_STILL_OK);
if
(get_modinfo(info,
"staging"
)) {
add_taint_module(mod, TAINT_CRAP, LOCKDEP_STILL_OK);
pr_warn(
"%s: module is from the staging directory, the quality "
"is unknown, you have been warned.\n"
, mod
-
>name);
}
/
*
Set
up license info based on the info section
*
/
set_license(mod, get_modinfo(info,
"license"
));
return
0
;
}