Patch "livepatch: add module locking around kallsyms calls" has been added to the 4.0-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
livepatch: add module locking around kallsyms calls
to the 4.0-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
livepatch-add-module-locking-around-kallsyms-calls.patch
and it can be found in the queue-4.0 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
9a1bd63cdae4b623494c4ebaf723a91c35ec49fbMon Sep 17 00:00:00 2001
From: Miroslav Benes <[email protected]>
Date: Mon, 1 Jun 2015 17:48:37 +0200
Subject: livepatch: add module locking around kallsyms calls
From: Miroslav Benes <[email protected]>
commit 9a1bd63cdae4b623494c4ebaf723a91c35ec49fb upstream.
The list of loaded modules is walked through in module_kallsyms_on_each_symbol (called by kallsyms_on_each_symbol). The module_mutex lock should be acquired to prevent potential corruptions in the list.
This was uncovered with new lockdep asserts in module code introduced by the commit 0be964be0d45 ("module: Sanitize RCU usage and locking") in recent next- trees.
--- kernel/livepatch/core.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-)
kernel/livepatch/core.c +13 -5
@@ -179,7 +179,9 @@ static int klp_find_object_symbol(const .count = 0 }; +mutex_lock (&module_mutex);kallsyms_on_each_symbol (klp_find_callback, &args); +mutex_unlock (&module_mutex);if (args.count ==0 )pr_err ("symbol '%s' not found in symbol table\n" , name);
@@ -219,13 +221,19 @@ static int klp_verify_vmlinux_symbol(con .name = name, .addr = addr, }; +int ret; -if (kallsyms_on_each_symbol (klp_verify_callback, &args)) -return 0 ; +mutex_lock (&module_mutex); + ret =kallsyms_on_each_symbol (klp_verify_callback, &args); +mutex_unlock (&module_mutex); + +if (!ret) { +pr_err ("symbol '%s' not found at specified address 0x%016lx, kernel mismatch?\n" , + name, addr); +return -EINVAL ; + } -pr_err ("symbol '%s' not found at specified address 0x%016lx, kernel mismatch?\n" , - name, addr); -return -EINVAL ; +return 0 ; } static int klp_find_verify_func_addr(struct klp_object *obj,
Patches currently in stable-queue which might be from [email protected] are
queue-4.0/livepatch-add-module-locking-around-kallsyms-calls.patch