|
@@ -197,9 +197,10 @@ static inline int strong_try_module_get(struct module *mod)
|
|
|
return -ENOENT;
|
|
|
}
|
|
|
|
|
|
-static inline void add_taint_module(struct module *mod, unsigned flag)
|
|
|
+static inline void add_taint_module(struct module *mod, unsigned flag,
|
|
|
+ enum lockdep_ok lockdep_ok)
|
|
|
{
|
|
|
- add_taint(flag);
|
|
|
+ add_taint(flag, lockdep_ok);
|
|
|
mod->taints |= (1U << flag);
|
|
|
}
|
|
|
|
|
@@ -727,7 +728,7 @@ static inline int try_force_unload(unsigned int flags)
|
|
|
{
|
|
|
int ret = (flags & O_TRUNC);
|
|
|
if (ret)
|
|
|
- add_taint(TAINT_FORCED_RMMOD);
|
|
|
+ add_taint(TAINT_FORCED_RMMOD, LOCKDEP_NOW_UNRELIABLE);
|
|
|
return ret;
|
|
|
}
|
|
|
#else
|
|
@@ -1138,7 +1139,7 @@ static int try_to_force_load(struct module *mod, const char *reason)
|
|
|
if (!test_taint(TAINT_FORCED_MODULE))
|
|
|
printk(KERN_WARNING "%s: %s: kernel tainted.\n",
|
|
|
mod->name, reason);
|
|
|
- add_taint_module(mod, TAINT_FORCED_MODULE);
|
|
|
+ add_taint_module(mod, TAINT_FORCED_MODULE, LOCKDEP_NOW_UNRELIABLE);
|
|
|
return 0;
|
|
|
#else
|
|
|
return -ENOEXEC;
|
|
@@ -2147,7 +2148,8 @@ static void set_license(struct module *mod, const char *license)
|
|
|
if (!test_taint(TAINT_PROPRIETARY_MODULE))
|
|
|
printk(KERN_WARNING "%s: module license '%s' taints "
|
|
|
"kernel.\n", mod->name, license);
|
|
|
- add_taint_module(mod, TAINT_PROPRIETARY_MODULE);
|
|
|
+ add_taint_module(mod, TAINT_PROPRIETARY_MODULE,
|
|
|
+ LOCKDEP_NOW_UNRELIABLE);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -2700,10 +2702,10 @@ static int check_modinfo(struct module *mod, struct load_info *info, int flags)
|
|
|
}
|
|
|
|
|
|
if (!get_modinfo(info, "intree"))
|
|
|
- add_taint_module(mod, TAINT_OOT_MODULE);
|
|
|
+ add_taint_module(mod, TAINT_OOT_MODULE, LOCKDEP_STILL_OK);
|
|
|
|
|
|
if (get_modinfo(info, "staging")) {
|
|
|
- add_taint_module(mod, TAINT_CRAP);
|
|
|
+ add_taint_module(mod, TAINT_CRAP, LOCKDEP_STILL_OK);
|
|
|
printk(KERN_WARNING "%s: module is from the staging directory,"
|
|
|
" the quality is unknown, you have been warned.\n",
|
|
|
mod->name);
|
|
@@ -2869,15 +2871,17 @@ static int check_module_license_and_versions(struct module *mod)
|
|
|
* using GPL-only symbols it needs.
|
|
|
*/
|
|
|
if (strcmp(mod->name, "ndiswrapper") == 0)
|
|
|
- add_taint(TAINT_PROPRIETARY_MODULE);
|
|
|
+ add_taint(TAINT_PROPRIETARY_MODULE, LOCKDEP_NOW_UNRELIABLE);
|
|
|
|
|
|
/* driverloader was caught wrongly pretending to be under GPL */
|
|
|
if (strcmp(mod->name, "driverloader") == 0)
|
|
|
- add_taint_module(mod, TAINT_PROPRIETARY_MODULE);
|
|
|
+ add_taint_module(mod, TAINT_PROPRIETARY_MODULE,
|
|
|
+ LOCKDEP_NOW_UNRELIABLE);
|
|
|
|
|
|
/* lve claims to be GPL but upstream won't provide source */
|
|
|
if (strcmp(mod->name, "lve") == 0)
|
|
|
- add_taint_module(mod, TAINT_PROPRIETARY_MODULE);
|
|
|
+ add_taint_module(mod, TAINT_PROPRIETARY_MODULE,
|
|
|
+ LOCKDEP_NOW_UNRELIABLE);
|
|
|
|
|
|
#ifdef CONFIG_MODVERSIONS
|
|
|
if ((mod->num_syms && !mod->crcs)
|
|
@@ -3197,7 +3201,7 @@ again:
|
|
|
"%s: module verification failed: signature and/or"
|
|
|
" required key missing - tainting kernel\n",
|
|
|
mod->name);
|
|
|
- add_taint_module(mod, TAINT_FORCED_MODULE);
|
|
|
+ add_taint_module(mod, TAINT_FORCED_MODULE, LOCKDEP_STILL_OK);
|
|
|
}
|
|
|
#endif
|
|
|
|