Re: [RFC PATCH v2 2/6] module: preserve Elf information for livepatch modules

From
Petr Mladek <pmladek@suse.com>
Date
2015-12-17 16:28:22
Also in
linux-s390, lkml
Reply to
Josh Poimboeuf, 2015-12-08
On Tue 2015-12-08 12:32:12, Josh Poimboeuf wrote:
On Mon, Nov 30, 2015 at 11:21:15PM -0500, Jessica Yu wrote:
quoted
For livepatch modules, copy Elf section, symbol, and string information
from the load_info struct in the module loader.

Livepatch uses special relocation sections in order to be able to patch
modules that are not yet loaded, as well as apply patches to the kernel
when the addresses of symbols cannot be determined at compile time (for
example, when kaslr is enabled). Livepatch modules must preserve Elf
information such as section indices in order to apply the remaining
relocation sections at the appropriate time (i.e. when the target module
loads).

Signed-off-by: Jessica Yu <redacted>
---
 include/linux/module.h |  9 +++++
 kernel/module.c        | 98 ++++++++++++++++++++++++++++++++++++++++++++++++--
 2 files changed, 105 insertions(+), 2 deletions(-)
diff --git a/include/linux/module.h b/include/linux/module.h
index 3a19c79..9b46256 100644
--- a/include/linux/module.h
+++ b/include/linux/module.h
@@ -425,6 +425,14 @@ struct module {
 
 	/* Notes attributes */
 	struct module_notes_attrs *notes_attrs;
+
+	/* Elf information (optionally saved) */
+	Elf_Ehdr *hdr;
I would rename "hdr" to "elf_hdr" to make its purpose clearer.
quoted
+	Elf_Shdr *sechdrs;
+	char *secstrings;
Probably a good idea to add underscores to the names ("sec_hdrs" and
"sec_strings") to be consistent with most of the other fields in the
struct.
We should keep the names in sync with struct load_info.
quoted
+	struct {
+		unsigned int sym, str, mod, vers, info, pcpu;
+	} index;
I might be contradicting myself from what I said before.  But I'm
thinking we should put all these fields inside a CONFIG_LIVEPATCH ifdef.
Then below, there could be two versions of copy_module_elf(), the real
one for LIVEPATCH and and an empty one for !LIVEPATCH.  And the same
story for free_module_elf().
Yes, I would hide these fields for !LIVEPATCH.


Best Regards,
Petr
Thread (37 messages) 37 messages, 6 authors, last reply 2015-12-21
Keyboard shortcuts
hback out one level
jnext message in thread / next series-diff position
kprevious message in thread / previous series-diff position
ldrill in
Escclose help / fold thread tree
?toggle this help