mirror of
https://github.com/dynup/kpatch
synced 2025-02-18 10:46:55 +00:00
Rebased to kernel-4.18.0-304.el8. Note: since RHEL-8.4 dropped klp.arch support, we can now re-enable those tests that reference static keys defined in vmlinux. Also, adjust for adjust for ppc64le inlining: Building gcc-static-local-var-4.patch on ppc64le results in test failure, as the kpatch .ko now contains a 'free_ioctx' symbol (the test expects to NOT see one). From the build log: aio.o: changed function: free_ioctx aio.o: new function: put_aio_ring_file << now un-inlined? aio.o: changed function: aio_free_ring aio.o: changed function: ioctx_alloc aio.o: changed function: aio_prep_rw aio.o: changed function: aio_read_events aio.o: new function: kpatch_aio_foo << expected new function and a source code change to free_ioctx(): % diff -upr \ <(objdump -D -j .text.free_ioctx ~/.kpatch/tmp/orig/fs/aio.o) \ <(objdump -D -j .text.free_ioctx ~/.kpatch/tmp/patched/fs/aio.o) --- /dev/fd/63 2020-10-26 14:28:18.086236019 -0400 +++ /dev/fd/62 2020-10-26 14:28:18.086236019 -0400 @@ -1,5 +1,5 @@ -/root/.kpatch/tmp/orig/fs/aio.o: file format elf64-powerpcle +/root/.kpatch/tmp/patched/fs/aio.o: file format elf64-powerpcle Disassembly of section .text.free_ioctx: @@ -53,7 +53,7 @@ Disassembly of section .text.free_ioctx: b0: 00 00 82 3c addis r4,r2,0 b4: 00 00 84 e8 ld r4,0(r4) b8: 78 fb e6 7f mr r6,r31 - bc: e0 00 63 38 addi r3,r3,224 + bc: 38 00 63 38 addi r3,r3,56 c0: 01 00 00 48 bl c0 <free_ioctx+0xb8> c4: 00 00 00 60 nop c8: 70 ff ff 4b b 38 <free_ioctx+0x30> Marking put_aio_ring_file() as __always_inline keeps the r3 / 224 offset value, leaving free_ioctx() unchanged. Since it's no longer included in the resulting .ko, gcc-static-local-var-4.test will pass once again. Signed-off-by: Joe Lawrence <joe.lawrence@redhat.com>
21 lines
621 B
Diff
21 lines
621 B
Diff
diff -Nupr src.orig/fs/proc/meminfo.c src/fs/proc/meminfo.c
|
|
--- src.orig/fs/proc/meminfo.c 2021-04-20 11:04:26.717100594 -0400
|
|
+++ src/fs/proc/meminfo.c 2021-04-20 11:04:32.584115315 -0400
|
|
@@ -31,6 +31,8 @@ static void show_val_kb(struct seq_file
|
|
seq_write(m, " kB\n", 4);
|
|
}
|
|
|
|
+static int foo = 5;
|
|
+
|
|
static int meminfo_proc_show(struct seq_file *m, void *v)
|
|
{
|
|
struct sysinfo i;
|
|
@@ -146,6 +148,7 @@ static int meminfo_proc_show(struct seq_
|
|
show_val_kb(m, "CmaFree: ",
|
|
global_zone_page_state(NR_FREE_CMA_PAGES));
|
|
#endif
|
|
+ seq_printf(m, "kpatch: %d\n", foo);
|
|
|
|
hugetlb_report_meminfo(m);
|
|
|