Documentation: livepatch: add section about arch-specific code
Document usage of arch-specific elf sections in livepatch as well as implementation of arch-specific code. [jkosina@suse.cz: fix wording as suggested by Petr Mladek] Signed-off-by: Jessica Yu <jeyu@redhat.com> Reviewed-by: Petr Mladek <pmladek@suse.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
This commit is contained in:
parent
d4c3e6e1b1
commit
5ad75fcdd7
|
@ -25,7 +25,8 @@ Table of Contents
|
||||||
3.3.2 Required name format
|
3.3.2 Required name format
|
||||||
3.3.3 Example livepatch symbol names
|
3.3.3 Example livepatch symbol names
|
||||||
3.3.4 Example `readelf --symbols` output
|
3.3.4 Example `readelf --symbols` output
|
||||||
4. Symbol table and Elf section access
|
4. Architecture-specific sections
|
||||||
|
5. Symbol table and Elf section access
|
||||||
|
|
||||||
----------------------------
|
----------------------------
|
||||||
0. Background and motivation
|
0. Background and motivation
|
||||||
|
@ -46,7 +47,7 @@ architecture.
|
||||||
|
|
||||||
Since apply_relocate_add() requires access to a module's section header
|
Since apply_relocate_add() requires access to a module's section header
|
||||||
table, symbol table, and relocation section indices, Elf information is
|
table, symbol table, and relocation section indices, Elf information is
|
||||||
preserved for livepatch modules (see section 4). Livepatch manages its own
|
preserved for livepatch modules (see section 5). Livepatch manages its own
|
||||||
relocation sections and symbols, which are described in this document. The
|
relocation sections and symbols, which are described in this document. The
|
||||||
Elf constants used to mark livepatch symbols and relocation sections were
|
Elf constants used to mark livepatch symbols and relocation sections were
|
||||||
selected from OS-specific ranges according to the definitions from glibc.
|
selected from OS-specific ranges according to the definitions from glibc.
|
||||||
|
@ -117,7 +118,7 @@ also possible for a livepatch module to have no livepatch relocation
|
||||||
sections, as in the case of the sample livepatch module (see
|
sections, as in the case of the sample livepatch module (see
|
||||||
samples/livepatch).
|
samples/livepatch).
|
||||||
|
|
||||||
Since Elf information is preserved for livepatch modules (see Section 4), a
|
Since Elf information is preserved for livepatch modules (see Section 5), a
|
||||||
livepatch relocation section can be applied simply by passing in the
|
livepatch relocation section can be applied simply by passing in the
|
||||||
appropriate section index to apply_relocate_add(), which then uses it to
|
appropriate section index to apply_relocate_add(), which then uses it to
|
||||||
access the relocation section and apply the relocations.
|
access the relocation section and apply the relocations.
|
||||||
|
@ -292,8 +293,19 @@ Symbol table '.symtab' contains 127 entries:
|
||||||
[*] Note that the 'Ndx' (Section index) for these symbols is SHN_LIVEPATCH (0xff20).
|
[*] Note that the 'Ndx' (Section index) for these symbols is SHN_LIVEPATCH (0xff20).
|
||||||
"OS" means OS-specific.
|
"OS" means OS-specific.
|
||||||
|
|
||||||
|
---------------------------------
|
||||||
|
4. Architecture-specific sections
|
||||||
|
---------------------------------
|
||||||
|
Architectures may override arch_klp_init_object_loaded() to perform
|
||||||
|
additional arch-specific tasks when a target module loads, such as applying
|
||||||
|
arch-specific sections. On x86 for example, we must apply per-object
|
||||||
|
.altinstructions and .parainstructions sections when a target module loads.
|
||||||
|
These sections must be prefixed with ".klp.arch.$objname." so that they can
|
||||||
|
be easily identified when iterating through a patch module's Elf sections
|
||||||
|
(See arch/x86/kernel/livepatch.c for a complete example).
|
||||||
|
|
||||||
--------------------------------------
|
--------------------------------------
|
||||||
4. Symbol table and Elf section access
|
5. Symbol table and Elf section access
|
||||||
--------------------------------------
|
--------------------------------------
|
||||||
A livepatch module's symbol table is accessible through module->symtab.
|
A livepatch module's symbol table is accessible through module->symtab.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue