gregkh@xxxxxxxxxxxxxxxxxxx writes: > The patch below does not apply to the 4.1-stable tree. > If someone wants it applied there, or to any other stable or longterm > tree, then please email the backport, including the original git commit > id to <stable@xxxxxxxxxxxxxxx>. Hi Greg, That's OK. But a question: this was implied by the Fixes: tag; is there a better way to say "you need this IFF you have that"? Thanks, Rusty. > ------------------ original commit in Linus's tree ------------------ > >>From fe0d34d242fa1e0dec059e774d146a705420bc9a Mon Sep 17 00:00:00 2001 > From: Rusty Russell <rusty@xxxxxxxxxxxxxxx> > Date: Wed, 29 Jul 2015 05:52:14 +0930 > Subject: [PATCH] module: weaken locking assertion for oops path. > > We don't actually hold the module_mutex when calling find_module_all > from module_kallsyms_lookup_name: that's because it's used by the oops > code and we don't want to deadlock. > > However, access to the list read-only is safe if preempt is disabled, > so we can weaken the assertion. Keep a strong version for external > callers though. > > Fixes: 0be964be0d45 ("module: Sanitize RCU usage and locking") > Reported-by: He Kuang <hekuang@xxxxxxxxxx> > Cc: stable@xxxxxxxxxx > Acked-by: Peter Zijlstra (Intel) <peterz@xxxxxxxxxxxxx> > Signed-off-by: Rusty Russell <rusty@xxxxxxxxxxxxxxx> > > diff --git a/kernel/module.c b/kernel/module.c > index 4d2b82e610e2..b86b7bf1be38 100644 > --- a/kernel/module.c > +++ b/kernel/module.c > @@ -602,13 +602,16 @@ const struct kernel_symbol *find_symbol(const char *name, > } > EXPORT_SYMBOL_GPL(find_symbol); > > -/* Search for module by name: must hold module_mutex. */ > +/* > + * Search for module by name: must hold module_mutex (or preempt disabled > + * for read-only access). > + */ > static struct module *find_module_all(const char *name, size_t len, > bool even_unformed) > { > struct module *mod; > > - module_assert_mutex(); > + module_assert_mutex_or_preempt(); > > list_for_each_entry(mod, &modules, list) { > if (!even_unformed && mod->state == MODULE_STATE_UNFORMED) > @@ -621,6 +624,7 @@ static struct module *find_module_all(const char *name, size_t len, > > struct module *find_module(const char *name) > { > + module_assert_mutex(); > return find_module_all(name, strlen(name), false); > } > EXPORT_SYMBOL_GPL(find_module); -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html