From cf5d7c9a630035b4baa88e4bea2803fb9ed3a085 Mon Sep 17 00:00:00 2001 From: Igor Bulatov <55949591+SevLion@users.noreply.github.com> Date: Wed, 20 Oct 2021 14:46:34 +0300 Subject: [PATCH] bulatov_i --- .../skels/kernel_modules/1-2-test-mod/Kbuild | 3 + .../kernel_modules/1-2-test-mod/hello_mod.c | 21 +++ .../kernel_modules/1-2-test-mod/hello_mod.ko | Bin 0 -> 37168 bytes .../kernel_modules/1-2-test-mod/hello_mod.mod | 2 + .../1-2-test-mod/hello_mod.mod.c | 27 ++++ .../1-2-test-mod/hello_mod.mod.o | Bin 0 -> 30208 bytes .../kernel_modules/1-2-test-mod/hello_mod.o | Bin 0 -> 7972 bytes .../kernel_modules/1-2-test-mod/modules.order | 1 + .../skels/kernel_modules/3-error-mod/Kbuild | 3 + .../kernel_modules/3-error-mod/err_mod.c | 26 ++++ .../kernel_modules/3-error-mod/err_mod.ko | Bin 0 -> 37328 bytes .../kernel_modules/3-error-mod/err_mod.mod | 2 + .../kernel_modules/3-error-mod/err_mod.mod.c | 27 ++++ .../kernel_modules/3-error-mod/err_mod.mod.o | Bin 0 -> 30200 bytes .../kernel_modules/3-error-mod/err_mod.o | Bin 0 -> 8156 bytes .../kernel_modules/3-error-mod/modules.order | 1 + .../skels/kernel_modules/4-multi-mod/Kbuild | 8 + .../skels/kernel_modules/4-multi-mod/mod1.c | 27 ++++ .../skels/kernel_modules/4-multi-mod/mod1.o | Bin 0 -> 8376 bytes .../skels/kernel_modules/4-multi-mod/mod2.c | 4 + .../skels/kernel_modules/4-multi-mod/mod2.o | Bin 0 -> 2644 bytes .../kernel_modules/4-multi-mod/modules.order | 1 + .../kernel_modules/4-multi-mod/supermodule.ko | Bin 0 -> 39004 bytes .../4-multi-mod/supermodule.mod | 2 + .../4-multi-mod/supermodule.mod.c | 27 ++++ .../4-multi-mod/supermodule.mod.o | Bin 0 -> 30212 bytes .../kernel_modules/4-multi-mod/supermodule.o | Bin 0 -> 9824 bytes .../skels/kernel_modules/5-oops-mod/Kbuild | 4 + .../kernel_modules/5-oops-mod/modules.order | 1 + .../kernel_modules/5-oops-mod/oops_mod.c | 27 ++++ .../kernel_modules/5-oops-mod/oops_mod.ko | Bin 0 -> 37484 bytes .../kernel_modules/5-oops-mod/oops_mod.mod | 2 + .../kernel_modules/5-oops-mod/oops_mod.mod.c | 27 ++++ .../kernel_modules/5-oops-mod/oops_mod.mod.o | Bin 0 -> 30204 bytes .../kernel_modules/5-oops-mod/oops_mod.o | Bin 0 -> 8288 bytes .../skels/kernel_modules/6-cmd-mod/Kbuild | 3 + .../skels/kernel_modules/6-cmd-mod/cmd_mod.c | 26 ++++ .../skels/kernel_modules/6-cmd-mod/cmd_mod.ko | Bin 0 -> 60292 bytes .../kernel_modules/6-cmd-mod/cmd_mod.mod | 2 + .../kernel_modules/6-cmd-mod/cmd_mod.mod.c | 27 ++++ .../kernel_modules/6-cmd-mod/cmd_mod.mod.o | Bin 0 -> 30196 bytes .../skels/kernel_modules/6-cmd-mod/cmd_mod.o | Bin 0 -> 31152 bytes .../kernel_modules/6-cmd-mod/modules.order | 1 + .../skels/kernel_modules/7-list-proc/Kbuild | 3 + .../kernel_modules/7-list-proc/list_proc.c | 35 +++++ .../kernel_modules/7-list-proc/list_proc.ko | Bin 0 -> 75804 bytes .../kernel_modules/7-list-proc/list_proc.mod | 2 + .../7-list-proc/list_proc.mod.c | 27 ++++ .../7-list-proc/list_proc.mod.o | Bin 0 -> 30208 bytes .../kernel_modules/7-list-proc/list_proc.o | Bin 0 -> 46600 bytes .../kernel_modules/7-list-proc/modules.order | 1 + tools/labs/skels/kernel_modules/8-kdb/Kbuild | 3 + .../skels/kernel_modules/8-kdb/hello_kdb.c | 142 ++++++++++++++++++ .../skels/kernel_modules/8-kdb/hello_kdb.ko | Bin 0 -> 120504 bytes .../skels/kernel_modules/8-kdb/hello_kdb.mod | 2 + .../kernel_modules/8-kdb/hello_kdb.mod.c | 27 ++++ .../kernel_modules/8-kdb/hello_kdb.mod.o | Bin 0 -> 30196 bytes .../skels/kernel_modules/8-kdb/hello_kdb.o | Bin 0 -> 91576 bytes .../skels/kernel_modules/8-kdb/modules.order | 1 + .../labs/skels/kernel_modules/9-dyndbg/Kbuild | 3 + .../skels/kernel_modules/9-dyndbg/dyndbg.c | 32 ++++ .../skels/kernel_modules/9-dyndbg/dyndbg.ko | Bin 0 -> 37820 bytes .../skels/kernel_modules/9-dyndbg/dyndbg.mod | 2 + .../kernel_modules/9-dyndbg/dyndbg.mod.c | 27 ++++ .../kernel_modules/9-dyndbg/dyndbg.mod.o | Bin 0 -> 30168 bytes .../skels/kernel_modules/9-dyndbg/dyndbg.o | Bin 0 -> 8892 bytes .../kernel_modules/9-dyndbg/modules.order | 1 + 67 files changed, 610 insertions(+) create mode 100644 tools/labs/skels/kernel_modules/1-2-test-mod/Kbuild create mode 100644 tools/labs/skels/kernel_modules/1-2-test-mod/hello_mod.c create mode 100644 tools/labs/skels/kernel_modules/1-2-test-mod/hello_mod.ko create mode 100644 tools/labs/skels/kernel_modules/1-2-test-mod/hello_mod.mod create mode 100644 tools/labs/skels/kernel_modules/1-2-test-mod/hello_mod.mod.c create mode 100644 tools/labs/skels/kernel_modules/1-2-test-mod/hello_mod.mod.o create mode 100644 tools/labs/skels/kernel_modules/1-2-test-mod/hello_mod.o create mode 100644 tools/labs/skels/kernel_modules/1-2-test-mod/modules.order create mode 100644 tools/labs/skels/kernel_modules/3-error-mod/Kbuild create mode 100644 tools/labs/skels/kernel_modules/3-error-mod/err_mod.c create mode 100644 tools/labs/skels/kernel_modules/3-error-mod/err_mod.ko create mode 100644 tools/labs/skels/kernel_modules/3-error-mod/err_mod.mod create mode 100644 tools/labs/skels/kernel_modules/3-error-mod/err_mod.mod.c create mode 100644 tools/labs/skels/kernel_modules/3-error-mod/err_mod.mod.o create mode 100644 tools/labs/skels/kernel_modules/3-error-mod/err_mod.o create mode 100644 tools/labs/skels/kernel_modules/3-error-mod/modules.order create mode 100644 tools/labs/skels/kernel_modules/4-multi-mod/Kbuild create mode 100644 tools/labs/skels/kernel_modules/4-multi-mod/mod1.c create mode 100644 tools/labs/skels/kernel_modules/4-multi-mod/mod1.o create mode 100644 tools/labs/skels/kernel_modules/4-multi-mod/mod2.c create mode 100644 tools/labs/skels/kernel_modules/4-multi-mod/mod2.o create mode 100644 tools/labs/skels/kernel_modules/4-multi-mod/modules.order create mode 100644 tools/labs/skels/kernel_modules/4-multi-mod/supermodule.ko create mode 100644 tools/labs/skels/kernel_modules/4-multi-mod/supermodule.mod create mode 100644 tools/labs/skels/kernel_modules/4-multi-mod/supermodule.mod.c create mode 100644 tools/labs/skels/kernel_modules/4-multi-mod/supermodule.mod.o create mode 100644 tools/labs/skels/kernel_modules/4-multi-mod/supermodule.o create mode 100644 tools/labs/skels/kernel_modules/5-oops-mod/Kbuild create mode 100644 tools/labs/skels/kernel_modules/5-oops-mod/modules.order create mode 100644 tools/labs/skels/kernel_modules/5-oops-mod/oops_mod.c create mode 100644 tools/labs/skels/kernel_modules/5-oops-mod/oops_mod.ko create mode 100644 tools/labs/skels/kernel_modules/5-oops-mod/oops_mod.mod create mode 100644 tools/labs/skels/kernel_modules/5-oops-mod/oops_mod.mod.c create mode 100644 tools/labs/skels/kernel_modules/5-oops-mod/oops_mod.mod.o create mode 100644 tools/labs/skels/kernel_modules/5-oops-mod/oops_mod.o create mode 100644 tools/labs/skels/kernel_modules/6-cmd-mod/Kbuild create mode 100644 tools/labs/skels/kernel_modules/6-cmd-mod/cmd_mod.c create mode 100644 tools/labs/skels/kernel_modules/6-cmd-mod/cmd_mod.ko create mode 100644 tools/labs/skels/kernel_modules/6-cmd-mod/cmd_mod.mod create mode 100644 tools/labs/skels/kernel_modules/6-cmd-mod/cmd_mod.mod.c create mode 100644 tools/labs/skels/kernel_modules/6-cmd-mod/cmd_mod.mod.o create mode 100644 tools/labs/skels/kernel_modules/6-cmd-mod/cmd_mod.o create mode 100644 tools/labs/skels/kernel_modules/6-cmd-mod/modules.order create mode 100644 tools/labs/skels/kernel_modules/7-list-proc/Kbuild create mode 100644 tools/labs/skels/kernel_modules/7-list-proc/list_proc.c create mode 100644 tools/labs/skels/kernel_modules/7-list-proc/list_proc.ko create mode 100644 tools/labs/skels/kernel_modules/7-list-proc/list_proc.mod create mode 100644 tools/labs/skels/kernel_modules/7-list-proc/list_proc.mod.c create mode 100644 tools/labs/skels/kernel_modules/7-list-proc/list_proc.mod.o create mode 100644 tools/labs/skels/kernel_modules/7-list-proc/list_proc.o create mode 100644 tools/labs/skels/kernel_modules/7-list-proc/modules.order create mode 100644 tools/labs/skels/kernel_modules/8-kdb/Kbuild create mode 100644 tools/labs/skels/kernel_modules/8-kdb/hello_kdb.c create mode 100644 tools/labs/skels/kernel_modules/8-kdb/hello_kdb.ko create mode 100644 tools/labs/skels/kernel_modules/8-kdb/hello_kdb.mod create mode 100644 tools/labs/skels/kernel_modules/8-kdb/hello_kdb.mod.c create mode 100644 tools/labs/skels/kernel_modules/8-kdb/hello_kdb.mod.o create mode 100644 tools/labs/skels/kernel_modules/8-kdb/hello_kdb.o create mode 100644 tools/labs/skels/kernel_modules/8-kdb/modules.order create mode 100644 tools/labs/skels/kernel_modules/9-dyndbg/Kbuild create mode 100644 tools/labs/skels/kernel_modules/9-dyndbg/dyndbg.c create mode 100644 tools/labs/skels/kernel_modules/9-dyndbg/dyndbg.ko create mode 100644 tools/labs/skels/kernel_modules/9-dyndbg/dyndbg.mod create mode 100644 tools/labs/skels/kernel_modules/9-dyndbg/dyndbg.mod.c create mode 100644 tools/labs/skels/kernel_modules/9-dyndbg/dyndbg.mod.o create mode 100644 tools/labs/skels/kernel_modules/9-dyndbg/dyndbg.o create mode 100644 tools/labs/skels/kernel_modules/9-dyndbg/modules.order diff --git a/tools/labs/skels/kernel_modules/1-2-test-mod/Kbuild b/tools/labs/skels/kernel_modules/1-2-test-mod/Kbuild new file mode 100644 index 00000000000000..3674ef2591b3d9 --- /dev/null +++ b/tools/labs/skels/kernel_modules/1-2-test-mod/Kbuild @@ -0,0 +1,3 @@ +ccflags-y = -Wno-unused-function -Wno-unused-label -Wno-unused-variable -DDEBUG + +obj-m = hello_mod.o diff --git a/tools/labs/skels/kernel_modules/1-2-test-mod/hello_mod.c b/tools/labs/skels/kernel_modules/1-2-test-mod/hello_mod.c new file mode 100644 index 00000000000000..3fac57752e06ca --- /dev/null +++ b/tools/labs/skels/kernel_modules/1-2-test-mod/hello_mod.c @@ -0,0 +1,21 @@ +#include +#include +#include + +MODULE_DESCRIPTION("Simple module"); +MODULE_AUTHOR("Kernel Hacker"); +MODULE_LICENSE("GPL"); + +static int my_hello_init(void) +{ + pr_debug("Hello!\n"); + return 0; +} + +static void hello_exit(void) +{ + pr_debug("Goodbye!\n"); +} + +module_init(my_hello_init); +module_exit(hello_exit); diff --git a/tools/labs/skels/kernel_modules/1-2-test-mod/hello_mod.ko b/tools/labs/skels/kernel_modules/1-2-test-mod/hello_mod.ko new file mode 100644 index 0000000000000000000000000000000000000000..8e5928d05646f9f062839b7d236f9c87e535c9d8 GIT binary patch literal 37168 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 literal 0 HcmV?d00001 diff --git a/tools/labs/skels/kernel_modules/1-2-test-mod/hello_mod.mod b/tools/labs/skels/kernel_modules/1-2-test-mod/hello_mod.mod new file mode 100644 index 00000000000000..b246934d6da29e --- /dev/null +++ b/tools/labs/skels/kernel_modules/1-2-test-mod/hello_mod.mod @@ -0,0 +1,2 @@ +/home/igor/linux/tools/labs/skels/./kernel_modules/1-2-test-mod/hello_mod.o + diff --git a/tools/labs/skels/kernel_modules/1-2-test-mod/hello_mod.mod.c b/tools/labs/skels/kernel_modules/1-2-test-mod/hello_mod.mod.c new file mode 100644 index 00000000000000..8309f67e10c7df --- /dev/null +++ b/tools/labs/skels/kernel_modules/1-2-test-mod/hello_mod.mod.c @@ -0,0 +1,27 @@ +#include +#define INCLUDE_VERMAGIC +#include +#include +#include + +BUILD_SALT; + +MODULE_INFO(vermagic, VERMAGIC_STRING); +MODULE_INFO(name, KBUILD_MODNAME); + +__visible struct module __this_module +__section(".gnu.linkonce.this_module") = { + .name = KBUILD_MODNAME, + .init = init_module, +#ifdef CONFIG_MODULE_UNLOAD + .exit = cleanup_module, +#endif + .arch = MODULE_ARCH_INIT, +}; + +#ifdef CONFIG_RETPOLINE +MODULE_INFO(retpoline, "Y"); +#endif + +MODULE_INFO(depends, ""); + diff --git a/tools/labs/skels/kernel_modules/1-2-test-mod/hello_mod.mod.o b/tools/labs/skels/kernel_modules/1-2-test-mod/hello_mod.mod.o new file mode 100644 index 0000000000000000000000000000000000000000..533e748a2919389e679fdb56b8cb0131f5e168d5 GIT binary patch literal 30208 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 E0HC;QssI20 literal 0 HcmV?d00001 diff --git a/tools/labs/skels/kernel_modules/1-2-test-mod/modules.order b/tools/labs/skels/kernel_modules/1-2-test-mod/modules.order new file mode 100644 index 00000000000000..8903a407a3d6d1 --- /dev/null +++ b/tools/labs/skels/kernel_modules/1-2-test-mod/modules.order @@ -0,0 +1 @@ +/home/igor/linux/tools/labs/skels/./kernel_modules/1-2-test-mod/hello_mod.ko diff --git a/tools/labs/skels/kernel_modules/3-error-mod/Kbuild b/tools/labs/skels/kernel_modules/3-error-mod/Kbuild new file mode 100644 index 00000000000000..7bf41fb63f9589 --- /dev/null +++ b/tools/labs/skels/kernel_modules/3-error-mod/Kbuild @@ -0,0 +1,3 @@ +ccflags-y = -Wno-unused-function -Wno-unused-label -Wno-unused-variable + +obj-m = err_mod.o diff --git a/tools/labs/skels/kernel_modules/3-error-mod/err_mod.c b/tools/labs/skels/kernel_modules/3-error-mod/err_mod.c new file mode 100644 index 00000000000000..95cb3f9f24253c --- /dev/null +++ b/tools/labs/skels/kernel_modules/3-error-mod/err_mod.c @@ -0,0 +1,26 @@ +#include +#include +#include +/* TODO: add missing kernel headers */ + +MODULE_DESCRIPTION("Error module"); +MODULE_AUTHOR("Kernel Hacker"); +MODULE_LICENSE("GPL"); + +static int n1, n2; + +static int err_init(void) +{ + n1 = 1; n2 = 2; + pr_info("n1 is %d, n2 is %d\n", n1, n2); + + return 0; +} + +static void err_exit(void) +{ + pr_info("sum is %d\n", n1 + n2); +} + +module_init(err_init); +module_exit(err_exit); diff --git a/tools/labs/skels/kernel_modules/3-error-mod/err_mod.ko b/tools/labs/skels/kernel_modules/3-error-mod/err_mod.ko new file mode 100644 index 0000000000000000000000000000000000000000..0f4b520e8c87856881ae37e956c27ccedbfbdf26 GIT binary patch literal 37328 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 MrRN9Sj~o2|0F%ig6aWAK literal 0 HcmV?d00001 diff --git a/tools/labs/skels/kernel_modules/3-error-mod/err_mod.mod b/tools/labs/skels/kernel_modules/3-error-mod/err_mod.mod new file mode 100644 index 00000000000000..f26dd73788f752 --- /dev/null +++ b/tools/labs/skels/kernel_modules/3-error-mod/err_mod.mod @@ -0,0 +1,2 @@ +/home/igor/linux/tools/labs/skels/./kernel_modules/3-error-mod/err_mod.o + diff --git a/tools/labs/skels/kernel_modules/3-error-mod/err_mod.mod.c b/tools/labs/skels/kernel_modules/3-error-mod/err_mod.mod.c new file mode 100644 index 00000000000000..8309f67e10c7df --- /dev/null +++ b/tools/labs/skels/kernel_modules/3-error-mod/err_mod.mod.c @@ -0,0 +1,27 @@ +#include +#define INCLUDE_VERMAGIC +#include +#include +#include + +BUILD_SALT; + +MODULE_INFO(vermagic, VERMAGIC_STRING); +MODULE_INFO(name, KBUILD_MODNAME); + +__visible struct module __this_module +__section(".gnu.linkonce.this_module") = { + .name = KBUILD_MODNAME, + .init = init_module, +#ifdef CONFIG_MODULE_UNLOAD + .exit = cleanup_module, +#endif + .arch = MODULE_ARCH_INIT, +}; + +#ifdef CONFIG_RETPOLINE +MODULE_INFO(retpoline, "Y"); +#endif + +MODULE_INFO(depends, ""); + diff --git a/tools/labs/skels/kernel_modules/3-error-mod/err_mod.mod.o b/tools/labs/skels/kernel_modules/3-error-mod/err_mod.mod.o new file mode 100644 index 0000000000000000000000000000000000000000..c0702d29647afbcd3c3b9272291c7570b474e679 GIT binary patch literal 30200 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 literal 0 HcmV?d00001 diff --git a/tools/labs/skels/kernel_modules/3-error-mod/err_mod.o b/tools/labs/skels/kernel_modules/3-error-mod/err_mod.o new file mode 100644 index 0000000000000000000000000000000000000000..b617c5f5685b50e4cc361556cdac6d0b438bc775 GIT binary patch literal 8156 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 DHeP*% literal 0 HcmV?d00001 diff --git a/tools/labs/skels/kernel_modules/3-error-mod/modules.order b/tools/labs/skels/kernel_modules/3-error-mod/modules.order new file mode 100644 index 00000000000000..f6c71931f809b4 --- /dev/null +++ b/tools/labs/skels/kernel_modules/3-error-mod/modules.order @@ -0,0 +1 @@ +/home/igor/linux/tools/labs/skels/./kernel_modules/3-error-mod/err_mod.ko diff --git a/tools/labs/skels/kernel_modules/4-multi-mod/Kbuild b/tools/labs/skels/kernel_modules/4-multi-mod/Kbuild new file mode 100644 index 00000000000000..4ca58479ebb7a2 --- /dev/null +++ b/tools/labs/skels/kernel_modules/4-multi-mod/Kbuild @@ -0,0 +1,8 @@ +ccflags-y = -Wno-unused-function -Wno-unused-label -Wno-unused-variable + +# TODO: add rules to create a multi object module + +EXTRA_CFLAGS = -Wall -g + +obj-m = supermodule.o +supermodule-y = mod1.o mod2.o diff --git a/tools/labs/skels/kernel_modules/4-multi-mod/mod1.c b/tools/labs/skels/kernel_modules/4-multi-mod/mod1.c new file mode 100644 index 00000000000000..08511866c460a1 --- /dev/null +++ b/tools/labs/skels/kernel_modules/4-multi-mod/mod1.c @@ -0,0 +1,27 @@ +#include +#include +#include + +MODULE_DESCRIPTION("Multi-file module"); +MODULE_AUTHOR("Kernel Hacker"); +MODULE_LICENSE("GPL"); + +extern int add(int a, int b); + +static int n1, n2; + +static int my_hello_init(void) +{ + n1 = 1; n2 = 2; + pr_info("n1 is %d, n2 is %d\n", n1, n2); + + return 0; +} + +static void hello_exit(void) +{ + pr_info("sum is %d\n", add(n1, n2)); +} + +module_init(my_hello_init); +module_exit(hello_exit); diff --git a/tools/labs/skels/kernel_modules/4-multi-mod/mod1.o b/tools/labs/skels/kernel_modules/4-multi-mod/mod1.o new file mode 100644 index 0000000000000000000000000000000000000000..f9a8f6ff1dbdf03693749181aad4062322ec8c21 GIT binary patch literal 8376 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 K%@YE8a{mXIoSUNn literal 0 HcmV?d00001 diff --git a/tools/labs/skels/kernel_modules/4-multi-mod/mod2.c b/tools/labs/skels/kernel_modules/4-multi-mod/mod2.c new file mode 100644 index 00000000000000..bc0af867d7c87c --- /dev/null +++ b/tools/labs/skels/kernel_modules/4-multi-mod/mod2.c @@ -0,0 +1,4 @@ +int add(int a, int b) +{ + return a + b; +} diff --git a/tools/labs/skels/kernel_modules/4-multi-mod/mod2.o b/tools/labs/skels/kernel_modules/4-multi-mod/mod2.o new file mode 100644 index 0000000000000000000000000000000000000000..34553fb960b94bbc320867f87010d8662184aec7 GIT binary patch literal 2644 zcmbtWOK%)S5boYr0vnsy87QtT38Rb5?O>j$sBag%e- z9B|fT#~foDrz*`xiI&+p)^nyM=0E)~1JNp(7JnO<&*AfRqm;l~1&!9JLx_NgZ}86d z;F>ZF8RzZH8j&$SB(5bPpDQV=Yx|I#BMERKEWgaA4!zx^uU`b9Jk~y5g;QtNpc=wbhl?)s?0vI0v6eX)qefF{lI?ZSQ=^8;7!`^vm%&8%x=2H5 z4z_8RG{JZ~+Pu06I!eRHs2~@bI?a^X!*;qm5)6e+AkrypQpI9Q;vXB7QDqsswX<`r zzx=B5BbnN^6PwRH-hhmq#VdORK;wUO`b?|!DPGwb$Q;z)rIXcXUyJ?r$jJ$xoQ%X* zFWuQRPrP)}S7Y&5-*IG#o6HVZD{Zp+n4$eoK4xFfp7a=UHE6P@Y8>h3jy%#?7il)w zS4)$Zvf=oUSB_8%7C&wA5@8(iS;9{+wru4Ci#IL4Nf>tT62_5yi%b9Q>K;fxv38iN zj3X$`N|G}#J4n##z`3dL*ikv&E%T^-ndfI2^NfnUQ2E8^ev}S1R3$Ba->5yu#X6`P zO3ZI}gWw7lb;!Tjt-!|Z0m;Z8{q8t$x)&h8wU&92?oZs+d%)BO)VZ`M-b+|+ z4@mYMRzidYr+Xc|qe=BVn9J6Nkkh?Wqe;FCMV|-@&h9SwdVcp%NU9m-M|rvYV$g06 zNHzuYfCvjtHwIt#7sDUtRFPWSG literal 0 HcmV?d00001 diff --git a/tools/labs/skels/kernel_modules/4-multi-mod/modules.order b/tools/labs/skels/kernel_modules/4-multi-mod/modules.order new file mode 100644 index 00000000000000..4132334545fa39 --- /dev/null +++ b/tools/labs/skels/kernel_modules/4-multi-mod/modules.order @@ -0,0 +1 @@ +/home/igor/linux/tools/labs/skels/./kernel_modules/4-multi-mod/supermodule.ko diff --git a/tools/labs/skels/kernel_modules/4-multi-mod/supermodule.ko b/tools/labs/skels/kernel_modules/4-multi-mod/supermodule.ko new file mode 100644 index 0000000000000000000000000000000000000000..700a45580eeeaf2befeb2c96c29a9794e8de5579 GIT binary patch literal 39004 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 literal 0 HcmV?d00001 diff --git a/tools/labs/skels/kernel_modules/4-multi-mod/supermodule.mod b/tools/labs/skels/kernel_modules/4-multi-mod/supermodule.mod new file mode 100644 index 00000000000000..605bad052eddec --- /dev/null +++ b/tools/labs/skels/kernel_modules/4-multi-mod/supermodule.mod @@ -0,0 +1,2 @@ +/home/igor/linux/tools/labs/skels/./kernel_modules/4-multi-mod/mod1.o /home/igor/linux/tools/labs/skels/./kernel_modules/4-multi-mod/mod2.o + diff --git a/tools/labs/skels/kernel_modules/4-multi-mod/supermodule.mod.c b/tools/labs/skels/kernel_modules/4-multi-mod/supermodule.mod.c new file mode 100644 index 00000000000000..8309f67e10c7df --- /dev/null +++ b/tools/labs/skels/kernel_modules/4-multi-mod/supermodule.mod.c @@ -0,0 +1,27 @@ +#include +#define INCLUDE_VERMAGIC +#include +#include +#include + +BUILD_SALT; + +MODULE_INFO(vermagic, VERMAGIC_STRING); +MODULE_INFO(name, KBUILD_MODNAME); + +__visible struct module __this_module +__section(".gnu.linkonce.this_module") = { + .name = KBUILD_MODNAME, + .init = init_module, +#ifdef CONFIG_MODULE_UNLOAD + .exit = cleanup_module, +#endif + .arch = MODULE_ARCH_INIT, +}; + +#ifdef CONFIG_RETPOLINE +MODULE_INFO(retpoline, "Y"); +#endif + +MODULE_INFO(depends, ""); + diff --git a/tools/labs/skels/kernel_modules/4-multi-mod/supermodule.mod.o b/tools/labs/skels/kernel_modules/4-multi-mod/supermodule.mod.o new file mode 100644 index 0000000000000000000000000000000000000000..6ec544d399ef9af5fad1ecc89d4bf66a164451a0 GIT binary patch literal 30212 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 G_5LT{EWo<} literal 0 HcmV?d00001 diff --git a/tools/labs/skels/kernel_modules/4-multi-mod/supermodule.o b/tools/labs/skels/kernel_modules/4-multi-mod/supermodule.o new file mode 100644 index 0000000000000000000000000000000000000000..543a0e7d590ac14dd47de8ca55474317546f607b GIT binary patch literal 9824 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 literal 0 HcmV?d00001 diff --git a/tools/labs/skels/kernel_modules/5-oops-mod/Kbuild b/tools/labs/skels/kernel_modules/5-oops-mod/Kbuild new file mode 100644 index 00000000000000..5bac1c5f47c1be --- /dev/null +++ b/tools/labs/skels/kernel_modules/5-oops-mod/Kbuild @@ -0,0 +1,4 @@ +# TODO: add flags to generate debug information +EXTRA_CFLAGS = -Wall -g + +obj-m = oops_mod.o diff --git a/tools/labs/skels/kernel_modules/5-oops-mod/modules.order b/tools/labs/skels/kernel_modules/5-oops-mod/modules.order new file mode 100644 index 00000000000000..0acff83b7149c2 --- /dev/null +++ b/tools/labs/skels/kernel_modules/5-oops-mod/modules.order @@ -0,0 +1 @@ +/home/igor/linux/tools/labs/skels/./kernel_modules/5-oops-mod/oops_mod.ko diff --git a/tools/labs/skels/kernel_modules/5-oops-mod/oops_mod.c b/tools/labs/skels/kernel_modules/5-oops-mod/oops_mod.c new file mode 100644 index 00000000000000..9fd1448572a94a --- /dev/null +++ b/tools/labs/skels/kernel_modules/5-oops-mod/oops_mod.c @@ -0,0 +1,27 @@ +#include +#include +#include +#include + +MODULE_DESCRIPTION("Oops generating module"); +MODULE_AUTHOR("So2rul Esforever"); +MODULE_LICENSE("GPL"); + +static int my_oops_init(void) +{ + char *p = 0; + + pr_info("before init\n"); + *p = 'a'; + pr_info("after init\n"); + + return 0; +} + +static void my_oops_exit(void) +{ + pr_info("module goes all out\n"); +} + +module_init(my_oops_init); +module_exit(my_oops_exit); diff --git a/tools/labs/skels/kernel_modules/5-oops-mod/oops_mod.ko b/tools/labs/skels/kernel_modules/5-oops-mod/oops_mod.ko new file mode 100644 index 0000000000000000000000000000000000000000..7dec498d686e2150eef7756d8c83bfefe13e5678 GIT binary patch literal 37484 zcmeHwdw5(`)%QMg%gLO{t&>ToP1;V58-0`_u~JC z)~#yjv9o{v@`C*rocL1c?8;5nBj?|`sVRUoT@SvR`v%AMfaYiGr~j~nc={jsWT=6m?y>$Y8ce5FZrI$cl4GMghDKJl4=orO>yI_2S=X-Ai0V$IyGHtkNBf2b zSGEler(?aT!PH1{v~RFCW-3LN;nZMvdZijkjSdg>_YJ029xoE-)35H2g+E=8AKf>*?WN%NHP6=))71d<*eWoROktAMka6YK1BP13i1A6 z5yFAs3Z&+^o$|*6m$Udjaupl|lUDFfWcCDm@$C&p@aBP#L-3-KKY4zq^fZ&961c2#b$2rJMIyoPpqOgmZ$=BHj+pLH^v}g@_3T+rUsT zcnC~5!F`Ai1%HNmLctU8ofrHUV)BCzqlWz8od_2M*CM_!con{jf&rAB6ig!=4qlFM zaqtGz6A6AE-zCB85kEP20NsfOe}$MS!T&-%Q-hVrSsI*$)Ux0ONSzj(0#2p}qY(Fu z;1Z<9f@dIqdGH0KRs;{DyEB9L(2qH14o4Z7`D&H{iGTWAHo$#S(wSHV+|ULzbR zVXw+x0jNP@0adX=d6~QLCFHOI7UM0yw-PBjUx%A-vhuEDzDJlZ$6`G4h1`5+y7?UC z?PtC-F$R`xF&_DlO%;8W;YeNu!iD&6U3~x%ljb4#8UiYOBZkBZhE7D7ALg^JW>WF6 zvO@N5Mo!AZ7vm;PmjLttA^vx6^{Z3rI8ioWOnlborlNx1%~om@g*d}u=`NWJ5ztSd zXX4|R#po+go8Pw)Buw9;Fci4~;hZ^fq!&*)-ozJT^5>j_E?bew{W{8iA5k!mf0~7q z*-VK>&u5A!Cx|ZQ_-7(&YV?bUvW?jcFr0H#KH^JD*nG~DC~HlxxrfDU|2bp~p+ zX3Tw5N98Q7#w>gIRuvH;Yo=4DkR{KO{sq}X4#vgy-)^s9wr{hoZx=JHoC`HkO2UUeOag`~(2(u_uDv6Z`+E_F zl`{iE@_%pIpyXZ+^!u2U*HNLz_bL0!piC1_M;TVmOp4)|+*?4fiBVuai2|MM_k9iF zLZ9FFePGd~jnKT9Cl=_l?A8Eg#J|vuz-do z!uuerK-!9a0@TLvKhfpDs8xC_%AFa02we({S@}nyl5@gkOxtCsPliXS>$|NlM3;!_+>P)MEV!tx{aZ=}41;0bPR~7FZR)O=Z z$#n5`*^l z@FT3{YD2vjz7j(oxW<$_9JvQd64-CbVKN?oA_l%{n($eXYnXbSA#E#iY%$2MTd_ZY zxsVn4bS20eEPFrXTWFPhhBCd$np}p|Sj;NPhZ+TLHneZE73ro7{>v&o4RSrliag8G zw^@a>ARvz-Ti>x9%H)$)t6xK^t!4#xEWksIm;J#v&Rf2rhikylm9ynw& zzhFgPqlW&`nz|UNFIkZwQ(rZyhpfo2VdMgD8lGRXB4Zr1w@m6AR%8k1!C$SSW1w|! zqh^Rd@U}_)yA_#B(fK`kUL3|KutzzD^m!t^lylINdlLpcB0gp= z@x&UyRk0^>GResvt>jUUntUE@iLz6=}N86X8BIiBKmzv3amg>sh!*CITL{y z^JgP%eF+WVj0$K|?uHqRS6*hj82|OUnxjHjcwW}_8d z)A143q?~7FpPe4D#OaT3gec0 zW63W;_)McW=|)4Qott$#g@%J~X<`zpr!c+0M;ZPXZ^iGUI72s~vz5W(!lk*WJru)I z7@5S8g;2pxaI#impYtvj+u&rqc-u}d^d%V8b|K{a6$240jhuy=3sp`p#ydF8dk9pp zGT7qnWwrN0IKkE&hLy?RHreF&{vJ`g5wDplP^Fc@jh@Rv&$tKD4K__?Mbp-@V5kLE zR|Yo}ego8WmVw@#0O1DPy)03F4Q7wucRPYPHX3w7lR0QPKdwSJPlqe6L@#`yGOO?{ zuJ$YECZHnhedk3_{@e%&Ctt5L0um(J`yl94{6~EJA8dDSC#FHRsRJF?>98o`-<& z@y#i#&;eV`U4(v`R!dd|mY~)6L42wBA5e>>%I^RKeMOPnEr^ZLfE1P3*Fz{MWnoZ? zCVP)U3bIVirPVQ6O6_l(EO`)HQJMD?r1*Uo;5+|vd=+p3QlY63UCpFQ`@4v8ro`d8 z&&sDRC}%6QU{aN~+m#T|98lFUmJBtaO<%acrhDPA!Emv**htDj4b8=i?UfLg*689T zMVl}x%DEjQQM^>w?TZbiPgljuXZ#pttDWm0nc|~#Lp6GS6t4`DxkXy5i&yJeuuO%% z1=k@OX(&vw?&~4f$Qr%28|{y*)A@WV=P*V#vffJ;YCa9Njbta|AmKZRiZ@a0@w#e= zHvSKcmnVJ!)-!MXdx-JH?~Or9aXJ)%_{eM&hRnW)Vzo;kj+1=R1(y9&jDPq>vN$2dzR5-}dmi zkVSNtRrV5cp5)Gvsqw(yAdL9ETBH?N%dPmM`1ZuFMYK1557uEEu6!RuUpVz>y9j-D z7C_;qt}J92Sy;Ii#UfHF?>dM-ifD0^vkDR~ojQpLJ|~VAOG`Cj zV}w{mXaF7cmCmsDuqZ1kjp+gj|>u6cMw$#hCj+QObx_2}(qQ^DU;&v`ZP*106HIrC_avp~`r`5`I z3LSuy=1-q$bEKV_u(8ui^_rlZ2)LVGHkF)mPqGvlCjAJV+32;SpR(*zK+pS645h6i zGa#7gN>AYw*oTc?HUCrSrJDI!JG2t%)iWIX4%U7-Sf5c?Y?kp#2ysS{mZ&t(bMReP-ox1Hp6}ldM?1-i9 zG;5g8LZcB@t(;8|Xl$&Q3{}Q>e|@>t|u#GR^#v%Fews=6I+ z<;v%1BYLYtt5`m_^v9SR2b_yAiOXxWLA(p@2Uzy|*l38kmR020_aU1WMn%5XA?2)t zHdhqrCCi5kk5N@oqzT)37zHbeBAfvs=P)>|2H?_ zSfm2)gCD<-J(!(Fk@Cgfvk_yLbDj13o<@890(KUTbgJla)+EkT zp9(L5DU5Ejv>Jv~Iqj9-$9&~KKt}@Qny$ik#Z|05y4SK#0u_D$3Lf2OmE6f073OI{ z^bD(nNt`P6Ebun^dvx?{%jT$tZ5q^%TV{0%ABD6iHipdT3*QU=qvu-1oT?$Ui1X`w z%X1ex5?+L_=mpkPnrs!mh1_0fO*)y(hfl|M6dPgcjvaoERer__|Ar-a*^itEW z;_#QSOhzv=R5bi6*7A8nm4%mMjf#H3P%-TdMX$1)-=UVu@RMx)tCrp(REKZJU_`%V zsG9Iiup7}k3^hNTL`R|r4YerDv;62!tbDGI%feS->P3HM>D700xQ3E@$jYH#-4T8k zni&0sr5EGv;d9u+W7cG<{F&kH6xrjJcJ3bvA4?fOWB7a`d;rrX`Wr(%6`l&S6@AW7 z&xSXUv*!)!>F<%kF&ooo5V^h@(Bw6WosH|N3|7M4ciNHHpv<*Qp{Ffwic3{Z$*yha`uWT zyU1GHIkJ;v8B>>8k=wWqzhae>JQ|x;4$mQzd9@XJlx!R_nb%p7!_=HZ)+}b;Xhl3g zkn>44TanpRkXNmuS1^p5t;jvB`3Tay@0Yz*9m?8}q6q z>>5?PfRz=HI^qk{k2A;bqj#^5aNh-~9qC$Cz6I6zeT?z@Ix&Xj%XQF3D}EpSU0tFY zPu{CB7) zKYqFXei=Lz#9u}Yh4FilS`>d9HBXAq1}EY8r(ivc;|a79iJyvYl*B6`r^)e$siN_6 z>^i2zFU0rM_)U;#Y5ZH@yez&LsxdA8N0gl&{~NfP5kCnrv3L&TS|0C$mQ}=qsBLCE zjQo}HkAb&YYHlqOL>zw$a6c9QxgMtTz^E19k8XS7Pl8=Teax)2VSS|QT#ug5T35^jpEDQ3GOMxhaS+9^{?wqF)uh+CO6NF?=B!Qr-=pSg z=UXh(tcf|w%Qjg;>$cZu?u+Ae-Ucx8LaZuk--zBjaVT=t)IxLx#H$csRjDTID(8V&cJ*=wc zmK2rZd{BkX0k0iZ^KF*Wo=;W1=2bcU7@evGT56Tf%@ASLVofYEtS;4cuXA38&QvYa zt!{L-V8&D}*9|p0T-d8th=1nyQBKQWhSbVDRjX|_@2tmgS2ctuBdi<;8c?;Scs7U* zXCB#Kr+u)K3|ozwts9(8EVEvxJhY;Z#0GOvXsvh)l~--le3e-%v~-&^6|+`o@qSEG zmDY;=nDtB%!9$F0^1I;~Y5C3JxgSSxt2Q+1s7Zfy_rbqeI`r3lzRty7>WbhfH#YBd$i zuc^6rV>HbSn7u79h)i)VG%DVMPFnFi)Z~eu1d(yN+-tEI9UQ-J3*!7f?$&eOgi2NC z>T9Q*v(Qv^P+wBz+=|&*ou}hN&(fq+-&GjE7R-4IV_AK7{#Vc%{BHE8`n&n(lRxJ{ z=wS8tbc*eK1@^M~`$hf86>{3qQuRHW$aCI9E!98BzZ_-qRnDE5P}TQ(Zv<6w2{a>A zeJ8e=$P)epx>9|YWm*b1A+7puL;1qFZ0fs)vf&iNs@2S?#A605*o6U@Gt0`;M;GBg zV{qoowsK!Y|0~1OAo)4fmiE=F)zN+3BWlsyuzfds_8D+Fw|EL0SI#MDVQ!?5i%yO6 z9E3EtL=*E>Xb*-h6hG1aGYkDEi1sK;7Vj?Uf}OHe=qxDfnehWQ z$=J?86~CioH55$gy;l5AUAND90<6cso6m08&PJrizo&O$M>`iW<@=gg?TkP)@q4E2 zjnP6RAnEu)y?ff|90sTH9~ScjXETPFEQW@lg1&gK{Yf zZ1SQv!|^k6@p=R;3G~v@5+xW+graEJ&Cw_shqD-HV#xE>53SEhmB&Mv%i>Sl>yXhDdfwh#&Ke%TIu-wIZW4sgIe`Q4ntcWc z+xZ<7F8=4>=RkyX}ZzrohOJ}SMKgF~hD=%CDCD;3pc+j$ILDhuc!*@K-it@a9z6!9{ejhn6 ze+Ml2eQgMq7RNv9xe$S}?!FNfzqFLvJ!3Q5xNLeKgf`=5YRP|;tw(89UJT9j`TgIc&|lPiG;|md<>zT;*^JJ_Y73}>T8|1i+Q^xMSe?vP8=juofVd)(Ar%^y1`(DGXDCO$wI}RCTVKLUkT5Qy|IziP-#~O-Mqa@3PRZ zEv2aGy7dC~v4DLm;G9FAN0GGTOoVNyu*t&^Qt|=ibr7fD_ck+8aMX5_N$r~ zRM-r&-qlPEY)4G|T*N^AP|S+Ig|J73o`aC1HM8vlNOzWCI@VMdFGN^5b1|4Tb8>$G z!sm=(C8(Jj{3!_AnFaN(i5LD6M9BF7Yh+DL;oBezogP@%n%dlRA^&2f+nmBd^84;a z@)U~D?|T5jB{X!;BT&FEM7{(lU!#}XM-ZICbieN}2!16(D0vI1Bl(L4p3-jWPus z8Fb=a#D>0sugbdBHWPFw>Kdd;9_Q7qk>flr7IkaGtRv(sX3Dz4<1qCK9SX3nvG_+I zieu?+Rfmg8%$%rm7mP^VhJyFNOWCSE^sH`^xg)b?#8$nCL9S~SdU|ZteXy!^EkaL= ztr|o_b*(~|#a5k#k*#YJx-e?G@%FCh6 zto>$~rOhE-?TrrgyV&_1G^zF`Z5E>1|C&ZkaBtkQ7>v=Iz>-?TbJ-FJd5S zUkTlSuyPt9^x8wAhd}sLpc9~*XJXcHvt_h*shiB~S;<`UU7l`1Qs@sDKHt2d!q-7K z7eK)ChUG3OX9Fg}ywknEWHyekZ+_V3eTP#5w&oY-u?Ui=ARToFZEA=%optwVJyOnI zR8aRr?bF%L6CC9Gi>QY+&L$EM#1c?+x;(5kl*=td-9YR%=RC-3qeHD9Jj;y ztXc~O5kE)R@1w~5zC$|9Nx9^G1o_|1M(YIs3^Cerux>Xg7vX%?Z)Cj>hPmJzW1XiX zcKOjTaK*WGSK1eYa%RKA)qPHfl`{*fSoeARY9xeKtmjnug5Fz&tfM-|dQ{z2IXuBA zv{pQhp{o0$PAkk+UXC;i>1~C_(9EgnW0bc6qPqw5F^drR01pf}Tte%vw%YF`hAW)VZ=~eYD`r586JvyT5TW8#0;t_6}?g0ZZY)})s z{y6(%Y7v|f%p>?){^M&T#L^*p<&%#1|!tGP@ zYmlxM*|t_=Ue@Rej#8m@P?1G}I{PtJK%)|vr;Umkyuf@tc$LnvU^7s!pS-J%4GgQm zf@x2pM2%C5H6gGtGK${LSLL;+!0%&Sp;ytF>cA3v8N3?3as-yj%0V+6SQa`N3B}qB z2Udj61rc?YVx zMSrtpZPQtKR#wh0*JyVkDWB~XP)W_|ji&-wlFJ|)*D0v<%gjm!+=$x|uK6jH!uVr> z#a7@ih>CYXB;5DWA^W?-1BhF&aq_BKg{U%L;AqR{6MV&-9f6gWmN1rnjC5d?HHF8x zKA)<+4Ykbo1sW`y58Z{IMLU7D=9x1U<_%e((L7Y<3;&2>+h8a=9EpKyGE^vB1O@_| z3{|*rV02IgTCK_C(^sr2ZiNji3>+x@}xc_D(Vn_1WR; zXsk{)R0y)+u?SYl0KbDUq<$Z#Z25LD=J&mT>ioWKL4LC@<-^+WzssPxK=afxjgPDN zeLV5PCI%dox50Y*eRFl<41Aa0qSfmt9Wh^jb1uw^`WEL{XMlFfkOARIU`JK;p>rV4 zL4q$-^)9py)McdL#%=(5`;kpYEJDDq^yJvj45XE6_`Io(Rr}0y;ogmizu(O=O9j4- za6=qIUYu(&9?y@ThAcYYpWJ+TD)1ZTyD)@&L5uOocM|fg;iI#QLsPP9FRv2@92F=+ zxZ!DXG1+1~N^N#)Z*uctSy|3}3*b~No@y~3`8FV*vWl!(`C-SKUz)#la*@SnFFlnw zLtKR@Fj=LVpqW02u_1#3Br-0rNO|*DI7d0lK^}wEHpgeJf}w5-n@C>F*wx5W2L5w> zmN);%)SymuP zp=ra?>?uXoq`>Ov7uHN+u}Pmk&r(HJJ%ZuvOikel*@{uA?RK;btwie7F;kA7GMMky zJ5h{BiqPfK=W;nNLL=QA>8X|^gf=ehT%=^0#yv;aa-4DLI(b>WT?WQNVRSV+N1lm* zB*shSN37Yp`vrbIwuKx}hzTo?nxymlO@5JbSX$BJz*dS8L8dYhkqJ5cxHZX+KxNAi zH#vJ~C_Y&8iBZ`8Mbzvm9PFtKV8Na|p}%F)u*hjzp5}i#fqc!7RwX%>otx?9VTg|7k% zB~&Rh6_--Uaa5Sqcd2{1(XDYsT#+qBR)Z(z$F-diN27@CvQPP~%+4WwT$Npoh08Um=?EiIWx@GDGdNcnMt zgB*}o(87c8#eOSL;P)I8xW?}fAR;ifA2H!T3(^oM@_SbLt!q5^$+mSL`1Gpp;rl~E z9+!viKlrHCzjf~G$`Z{-$7Ts^ycSogA1VC**@!C0qPD+($s))Gqmo5ID#JtRzCA|p zCRvYxk)j*q;AllbG{UJp!$TvZCVYB&xDUU{?%J8D0(Fwc&%85HDD$Cgh#T%5O?LLD zY8Uk5x8wbp+?ZsNk{y*C9UAECTCymyZ~V}0GdecdL!JJ~1f<2l#_xi#?vW231(CYVm0J|3T~$7nfAk0}{ZTT^bLRzq>z zWLK+EVx)6)Bt@-ecy~HQ4Ms3M&Q{mZz;J(xzoIuuqkRJ@P9o&mJv6fO^s&^Klph%2 zlmJt^y3<1@GzNA%Q_}6s3}RbdV~KRCx2v?Hgn}MkpBXj7p;S8M}i>*dDlu#xNjBwQfnQY1`Vmwh{J-RzbBU zHZ-<2ZfRPZXliZhXlm$a+rmr@t!=G|j*Xk!Ni?-KtnFwzt}(H`sku>YYumD^sdYnp zV@IO3ZC&G*#mNvR}Bu7wob6b0R z(;9T5dCS&BcBjzJx~451O=uf0oQSPmwmgQnEi9<3k1d$LpniUR{rp(%z~E4AI-N3s zfq^}lm<1-ZuzPT5w+SY9F?Asm(nCF?wLN%K!zhT6R4>MMVC6!DhcW0F%T#x5dNkR! zv$hlZ(48FFyOO17`BwJv)ef}-eS^40!(i8TjwA;WJ-TCTaA$354_;C+_~GPQv;mdI z3oL4T@vnP#a-^qrktW(ub9%IUW$)nFa`dN%{TUtUL(N!ul4-t|LPui84Gf{`o;2QT zFf~GBh|emaZKe+>LJ3Y8#g} zLiN&+2xSPb-oU_NNTmhM z%*w$bM05?|?H?n%P@H4Oh@M(ufUo-)#7eFHM+?=w%q;FwElnG?a5~8hz?5j*(%RUZ zXzyrPyD710jZt}-Mx16H4M*s>o*0~nZOzSz%}uR|Esf2M4ee&8t>4nvm{{A=ATt!% zvS$XJj>PUH6beeYGtC*v$N(ZYg9|a_QVNo7!+45 z8Jp>fzR6`xM`Rh%Esg6Nwl;Sp)?hr8o^i1WEj6}wY(f9oz4qpYH5fW=a5=;YG%UKY zwY8<~xXiF;4~m;3tDNc|8B1{CW2Iy}v29Be6l`;2>pGZrmEE}oYnnPTtzZ;0N~p_a zH>69owk5VSw61GwX*!`%wY2Dk#8`ebC3@S^)V?;m8{|SWu!j2F(b%$iLX6ruz^UJr z=t^P+YCkBW2dr94hO0$lbIUqeKt4jgdhu#aKo40!FG=I84LDtkb+MxnD(I$;*CzaR zG`8wQ&KJ|Ck7z~@FRIh)m&uh_gFOdUpSITKrq)K48C|m|2`^lJj#s1oor%7|o}qMR zBJia|6lD9h1`H48T-O*Djlt1`wmb^sEo-=ZBq%*sXs)So zO%XQ-S}{^-sxVp3*aES(dfs!yw6V<$UA7ddA$odiEok4^wgn1E$xq}`OB{JKYh1(H zW4AVK0h4sL=?d;0NbK5`93e*|qe^eI)W}dmzwQgOt`Bnx9syj&eXueU#OS_+Yk7T! z!;FfjM-xM%JMg}*tR-$}H{SGxy-i|dXlPW8Cj0u;0JjF&8i)Nu0&H-vlIX)LzETPk zZWx%LBcYP;AriX=k_k+NzCot(3NLFh_>hw5vf9Ja+c>4Seu)%*q6z7@t=q~)m&%*i z&_*Lq`=8j6N_JB)D5kLgK|j;*U(ok4ye}lPN}wa@F}+d4Mg*&d-qmP+P!!(NPPKak zt162vqkuj<1ZIzvfQL7b;6q{Aip%$%K{?R^Qqpi{uz~JEJFtNR2|UsF;dLdm(N;rv ze;VYQ-f4zz3{DyLUP_vy{_!1aiGk!Ww@9?CiR9=gS~Fng7mQP_${I?+O>CiEIs_dO~z&c}*vG zrMeTzu|2zBhx_`wvEXoU@rD>|8+WPH;I83BU-zDjig7)n13jTuM5dv)NwaK2P`sPn z)VAhhiPm=Q%fftOIm}E;>aW7l1m+%ROj-@~aNpFO>Q+V!?Ry9GmOs%mHrQoWr7XkX zu0~vlQkc#dBJ8~LKcQ8FnwK8NE+T=ZcppEEP1&x@6weqyZCbjqU%{kK zLx$R-aQhA>^jTG+6RI^ZI({I5vE@c-+%wm+jq-=^x}jE3%n5T63pOVul@&*45Uv_Y zVu-K&=hz4YqrF5JA6Dmfil#5y@iRswbM~cpcBAzOqd+?d7oaoY zx-Dp$7J?@N#^vEw&hR+81C4ZN700UGoMFR(!0!lL@5}7abe()f zC|6V3s*E~8lW@E`oZw_ja_;IKhtdl`R^z&Ytm5eTa4!@QmIKD1TWM{8VbUIlGNZsB zGEOjS%{VqxJ2AdEgiTPz%{o2NZPYFG4rBhF4wX#7;3sgbjzeuMo-$|qlY3zd6wIui zxO$rE3~96aYcoZUN~<(jb$2dif;%ZHW?qe z6B(fQu+t2+>8u_=musVovg&gR@a)bEDVIpBLR=ZOx1=rjU_viD`yjFrx?Se%9y$Z> zf?lUgDICyaHe*SlG1UtPy`gkkTXIe!<1lMOFpwH>XNI;r8CO&vlOV4)x3b&)(B_^C zk~YGyJY7(5HJBQuQ^!?;UIJd(g|!g|k;m=s8ZemP)*`(R#vL9J)Bv{(JdVcEK4ghG zGCHzX9dYI|hN}&3T*tV~!o4#Fi{{w9lA#HO>wb!(*cfwyBI;=PuS*)m%N2 zd{i%}Gp+(~@Y!uF3=W?LcGA^E_djCq3P!mnHK+VWDd|E1wBiin`UlD;^H1BfK~Q?N#r(LDV2h!u4f>d!x-wh#Pk;ht2D4voSwg7$aw>=v?1!*!9~@nfj*yA$dPy|9T3X|@Xwd!yeqjdNAG>bJcIy*3H=t9><)&+>e+ZihDB+GltjCzS z+G1v}=R6?NE)vhU;E{2`mmOW!RyuQR=bkiu!~vjLFZFuV*^iqcZ50h8*>yKhU*FzV>_!;^# z-E0Es5zrhO!LTN?rt39a@fZkBC)StU+Jn`t7{8x|^ga%AT(3zPBc=B{^rp-r32Q`) zIdK8xoBLd-ecw(NsN z*F2fiO1vKq%Z+gr^a*`W|5$oQ!d;u_ZR%YHN@Y$3wUg(rX!_U-23{YPF*|qidRs2W z7mA8yl22`z?G={SvD9D})>WKWWHu5giQ}*dMwklAvrYW*fd0&SrH}TE^ObdRm$d?L zp-*ckMX#th1J%w1js$jN-JlPY#%7cL_($C)(7(-`Oh7Q%XZ#RB_PMpuOelo80qEpC zNM=NF)T2FI{cJxPz_LFtdp?*Eev4WsT%?qiduWPwiIoG)M1Tu|zJL4^`6s z18jkDFR)idUYy)zJf`fEW}^-IJV6@J6Ofw1{1X+Ko55uNm^rpJrw+!Arc5z+UG)IB zvb~3_K77({R92ttnF}uQ_<1`w@vyA1!|bx)iHoM0+eUOKkrC<$9m8I8KYzqcD=nYi zrj73)6IqM&gj+vcX<``qQ$1NblC(@gtt(m2QgD0INeiSs0)1YXIY^Z4Th}s@Q|oDCpMo(0@w01lDkOo_8vP!KH-SY_NTBZ z%J}#C#7kdmjz2G;8=7zgz{7u8lrs;2Wv^g7*lM3}F^WTDo;ZU`{X~PJCZgc}vbMgIOdy`QRGHeu9x2w@^piL4Wvx58W5`h^OxE>4!NnGy{mHxs`FRGBCU3 zJWaeVPG+vHM_%xP+srjp=4lu?i_y1P`e+%)nL9+Mxz=ET#;ufo{4>F6$4T1TgNHkD zU9ZKXimX;?cp(BMaj@&k5ezSen+|-J{s0D_3?cOqrJ>l`4dvrJPgi)Vx$S9335`03969}FX#!K&& z^_rp&*v6Luq;X1`Uf~W9e|kv{Fcae*y*5{R73jvw?;h@o_Kao@7R(*_#AkzeV2s-x zY75nxr(IcVR%VZ(`#v(j1FRi=+KZ!K4WZJK;9N*QCYe>x-BIXrS+1UO7sZ*=?Wt6s zzCgn*Db5(tUDwdKxAr)D#q)+*&vEUeeZ5pyUk~H}OEH2oYn;QvQ8h=QE_0ZhdKu1C z{!tH>ayID;Z@Q|xvQD0GXF!h>1IIfoy=lTk0lPSU*C)D$Q^buQYam%)v2n+cd6HL7 zQ}JjtFA;TZc-IY$&v5olhB>o!eFCnn4C9=U`m7f%nABz3tCj;zX^fUrAGxXxYuB!b zRj*5R_9X}9S<%`hbB=s!6o0?$-^|C~Kj1HxePAi;OgrTB@$CovA)WiFK%gPt{*-4; zp8u2|Ap>YPooOuZrZ-DEqW;^@#J|GENBi*@an=WK6U(BQ&KAc%UOrfy_3^5lEQc089{JkyaK1v9Cw zDW0Km{oPD+T@xR7oA3~5b{*r7jb+FF8&5t>JZtTOLpnHy$3pZij2Z$fbDJxGY z6j2rws9MtJ2`&*_BiJNJ{bN1b1XF_jf@#5X1V1Hsjo=M}w+Vh%@P5IE1b-#?yx=Q> zZwS68NFCDs66E{wNmmFi7CcI@L2!d$i(tFp@q!7#QNewJ=LnuJc(LFWg8Kz;7raaG z2Z9d>{!H*uLB2hReE(7KFM{s~{!`H6_#$79V4h%DaEjmz!C8WF!Fs`Ef*%vyEO?yY zNrIh%I|K&>`94MRu}|ABSf-eicCis@%-v$3A=)>~D`h$Xnf+d1wf)#?*f^~w61Xl>I7Th3sykJ5wCAd@Y zbiv(%XAAy^;1>kHEci9Sy9MtR{ITFug3k-SB>1Y}n}S@pb-x7*1xp0^7vY$`ng}Cu zg3$Vp5rRHX=*uMib3$KD#Q&QFza#Mng?>ixMZwo4{Y}9Sh_F|F*fhfY?UkUP$TQdGlLA?A%(|NW*{RbV9K1b-Kf{lXhf=NOB*Y=SABB8Gm{D$BG!5<1f zD)_wM>w<>`9W0RKZ>r!N!R3NYg4+f8Ct{d?m*A%auN34TqGbB*g7*nND)?K$KMTGu z7{dE2SgurXuHbUPje>j=2J`g@jtPEJ@Cw0e1#c5PDENrr^MbDn@_qQMmp}L?P8FOZ z$RDyZexqQAU{Y{U@C?Dv3VuiMhk{QFzARV_2ZQxi3oa6D5IkA1Pw;%fF9}{R$iFDV zdhQeah2SBE_hIfC;An+1mi zFBbfw;5P*M*X3B>K|%h}2hzV0JS6yzU;!Lkrt=Me#5saX1=k54E0_@6DR{QvCj~DO zyiD-(f>#S(D|mz8cLX00{H5Rvg8ZX2F7YnWx+#-0Y;Gp1{f)@#1 zCHM`&1A>nU{#x)k!50PpDENlp`+}v|#%ehVE)iTSxJ|HIa76Iqf)@*ZL-5;z2L&G% z{Egrt!FL3`c=-a`FBF_6STDFyaJyhqa8U3J!3zcXPHWb8t>8}tUln{;(1(o?^A!nB z7pxKFTl$&KH#HFl1kV$^RPf7!cM3ir$UjlZa?cCCCdfYoz<3{y2Z%+2alvJRje>l8 zIP)b0`8NPa?-e{>@Cw2Gg5MJSvEbu^&kI^Oj$l1}#SO7kFfO=UaD(7Uf~N`Y5j1V1Twh2XVG0= zXA6E(@FKy>1V1l$wcxdaHwfM$ctG&Gf(HeEBKWl6Zw3D#_$R?P1>Y5XU(k!gOZGcg zus|>(SSna9I9sq*aG~IG!D9p)1^E_r)_<(vHo=nxy9E0LhXlt2&k#IU@B+b01g{YM zqTn@xUl+Vd@HW9a1@95OU+|}bj|e^~cu0_MP-j2h7W{{x!W-2X9}vtFj0si=)(9>T zY!&PfObQMPo*{Ul;I)GPCHS1+p9KFd=*R01$xm1?CRi)DLU4m%hhS20NbpR->je2X zrCIL}1b;60lpx>v%JjDcKM)M#{d0^j7pxQHAH-$+M!~Iuor1%HXA52|_$9$R1RoIm zrQi#Ke-`9x#@Wuwn87x|t%4^CCI!zCyjbum!RrKX6a0bT&jp_n{Da_If;?Dc`ys)p zg4Kdc1RDk01(Sk9f}auOpCx5|Ul;tg;6cHM1)mW-BxqHba(u})%a;mP3oaI1BiJU` zCCJwmvfSB%7Ylw-@Ed~P7Cb2Uvfz7ylV+NFW(d{@@((q!{u2ay1xE$X6TDRLYQb*` z-XVCu;G=@i3BD@$uAsltv=`jzu=>S&k4RNc+y-`Z=c{U!G{E&7JNnUuY$aw zAV2wnrGnLhiv`yR9w*3mv$EW<;8}tf3G%hAOutU>Ho=88CcZ(iRq#Z?-GX-tJ|Os* z;PZlsT2oKI;1z-g1s@iCThOXA`SS(G1kV$^RPYAD9}50aFn^vYUnY38V3Xi+g582= z30@?4o!~u!KNoyb@I}El1m717&NuB&7OWJ!NAOX>Ck3As{Jr2G1q1b_o)W=Xf(r#3 z1lt5p7Cb}n(}G_R{JP+`1)mXoQ}D3hlm({Uxq_Pnw+r?Neo62Kq6ha1LO)8xnd+-T z|6S<7Ld0VYjS&m*7H=Z*Z4~-Ap%JC5pt=9%`8T!?`Wzg?s^bBgMv_KbFeEtNGV!|H zBy*?EdX_OA^wE+})!``uK9*C5M*$4(a6^3bybfydoT z?I^nz{bnUd=->Om_2;peT@MWGv7K~Ua~CSa^wM{}Y?J?~KkfL>GHxB$BFw(HAExntr=Z*4 zCqZ9^|L(_acPAnk_DVvJn;^7HjvbNj93;ft%8?e6{HFu6`*8^UC`25#oI2j^$EBdz zAGh88ZUAxoxb0q*6=pp1orwA8e%yRlA|kupzoXq97<9JF`R2BJ9l~xI1l2#6;M~Q} zkomZ2cYt)mObKB!u4X_!Zrbgjv)euOVj~N-3)7Kl_ooQEWe`-&s4rWu+_WDdExW#R zvg#{Bn%j@xAncYwP<5lexgXJwUn4EMzWu0=awmUb{CDen1!2}VAOHFJYyZARqF_kAqCv{kS1ZE|jC& x57w2Xmg-E@Hy;t4|1jw~AN7%SWvkrHL%0vlV#Ezn=GplkM7w2fBGTO8{{q5rPHO-F literal 0 HcmV?d00001 diff --git a/tools/labs/skels/kernel_modules/5-oops-mod/oops_mod.mod b/tools/labs/skels/kernel_modules/5-oops-mod/oops_mod.mod new file mode 100644 index 00000000000000..4dc166ae3d890e --- /dev/null +++ b/tools/labs/skels/kernel_modules/5-oops-mod/oops_mod.mod @@ -0,0 +1,2 @@ +/home/igor/linux/tools/labs/skels/./kernel_modules/5-oops-mod/oops_mod.o + diff --git a/tools/labs/skels/kernel_modules/5-oops-mod/oops_mod.mod.c b/tools/labs/skels/kernel_modules/5-oops-mod/oops_mod.mod.c new file mode 100644 index 00000000000000..8309f67e10c7df --- /dev/null +++ b/tools/labs/skels/kernel_modules/5-oops-mod/oops_mod.mod.c @@ -0,0 +1,27 @@ +#include +#define INCLUDE_VERMAGIC +#include +#include +#include + +BUILD_SALT; + +MODULE_INFO(vermagic, VERMAGIC_STRING); +MODULE_INFO(name, KBUILD_MODNAME); + +__visible struct module __this_module +__section(".gnu.linkonce.this_module") = { + .name = KBUILD_MODNAME, + .init = init_module, +#ifdef CONFIG_MODULE_UNLOAD + .exit = cleanup_module, +#endif + .arch = MODULE_ARCH_INIT, +}; + +#ifdef CONFIG_RETPOLINE +MODULE_INFO(retpoline, "Y"); +#endif + +MODULE_INFO(depends, ""); + diff --git a/tools/labs/skels/kernel_modules/5-oops-mod/oops_mod.mod.o b/tools/labs/skels/kernel_modules/5-oops-mod/oops_mod.mod.o new file mode 100644 index 0000000000000000000000000000000000000000..54a168128f157b2ad1c25ece027ff3f92180b76f GIT binary patch literal 30204 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 literal 0 HcmV?d00001 diff --git a/tools/labs/skels/kernel_modules/5-oops-mod/oops_mod.o b/tools/labs/skels/kernel_modules/5-oops-mod/oops_mod.o new file mode 100644 index 0000000000000000000000000000000000000000..f4f7c17905be5fe06f5d1fc4272dd4d49ff8285c GIT binary patch literal 8288 zcmbtZ4Qw38b)LOH9)}dgA6XV7C81==kzwCaq!d|_LtDq=lG^J2e0S7e122xpC3)rD z?sfOh6csmhgZwCf3%Cke8-W`uNPwg+(7I{dq)m{zQDZnk?rR<^sI=J2M&3kX&y!m@GJNL_aZeG(g5hP7S#m$@$7x(y*BMJ_Raj{Ei zN0+P>$F(LJcB3Pat*vw{x0h=<%iX3mvFcdfM6KDJaJo=h{OI@B$ixqRa^uF07veTaXm zX*l*w(P?`VtCnrKwNArco$%cdug8SI4=JYIftG2_s1RRHDo*beiS^wJp8)>~-H4WW z1`5%`kb{0rLGpur$VK9Rr=agD)MK%D!|sSkGJc&@l6}8I5Q~2sHN<0n=|~s)iEDWE ze{t6V$ou+Y_W)u8i3q$&=9MQAk$i6gTzHziqP$It~P>RYw0XrrI_;EP`Iw4O$+7~n`es|&u6~9DYNgGaT@(WOo z$W^?f@;1CD{6YB**cp@;@ZKhW3eJ%HCM*oeFM!@Iv)~WQ zC-EMU36vd`9_TT71@sR2S=hNv{s!JV9ET_Gkh{>`@03R&osjQ?{$BY#NcYK~pt*O*Yk2RM27EXm`uiZ}?)XvSm#8~l zf~t_Og4EFreZ&p}%g{U?y|<$Y%pKP2(+>V~kX{?}e9>Ff<(Y>9RHu*@a$AqiWx! zca4u|qluHdo|qk{Vxu4ZfF?$?DUf4fC1Y%h+71{^1`XYVT5d~=2gctsZVv@^(Utr0 zAiN;a$oPrIBN)4YM;P!aE(EDYi$YM;)wDN;w&AUITgp$aIW23lvFf;!&4%5*IN5QW zrZ?HFEqRmPx&<;lxo)|()inLh%$t07%E305LRO?FYi@mQ^5U_hlMTDx>@HiAHLnGB zkW)58`EIS<@GBC6tdP-k9ji;UU8in&p5vz1sI9iMY_)3MI&zqyVh)UHo-tA zv|46ovu$~1r>E0uU2<%zr(bV(ecD4?dwCEFR8^NV>{wn zVtYLDK;r3mJOM_cdlj6qL>@8_Bk{;gTzfi#^NLm|o3q8mLRLpp$e<{g3wl8>8(GsR z7*!)vEtUn8GKFHntez@WC}R{d*{X3yH|LF3s53`ka zrpo#-K;_I*W1j`~{7McGoZQZZ)Hh+KKm3^xk(%o*jXfw~t8ixb&n$0w!^ zrKi(V6Vr#Lrw&a`9hykBY$xS;mQS==7kiv(pE|s3I~zV(dzhq$N#HpvozzOxsdbQX zt<`qTZOt48-FB@N%XO{gl-H@%*HcSQ*IurU-5QFB*PM^vT=%U)-BX4UQGg6(}QWJ+=RqhwMt@akivemRYR?6-+o2j;g!L!^{ea)(`a{(NYoeg+^BW-HA z)~Ti38Wtmr`Td8r*+DNkE;&iFOx5DF8t8tv*0KVd%*R={)wpD(yv7pN|7xlZ^IQ>k zii3kQ1`b2YH7I9hYzK_GgA=#=FpAUI5o0CA4$u+X#v&L0uc$Q{3OspZp-jt(R{)lT zUM}c4vr^4uPn)M_{VC7Oh?ZG3bITl83xgJ7F_$w-M!_uWIXzSHSK548*UfA`!z&bO z;gv!0%G{`7Ffb|CJz9~pcydOis)EB}K|f<;{Tk2aGv(7}u6UNTjKX}8FptH1T9mS- zMRPuD7Ruu6sUpHbMb8!sa}_Z^S3>ZaM@%YJ%N5buG*!#3i;a#b>zO&z$d_`4UNQA^ zdbVdKvsf*PATkt+WyAdWhM z2!x1qsyTUsW6BnDnYlT1gpoI@=HZ1|klEu;O^yh<)Ji=k5imxkCx#XL6_3;E)i-mr%UCC~_!6HT{kHW4Mr zD7kH(EgP6%CA~0*&@RG_o1QhQy;?Aey-BFbg)35}3PrP=Da;k~#syvE^J*jUBR{I* zd7C#X*>E$+3+2Ep&F89~FKyw7^%gDtx>>Jb1*$EzHxJ0P>KWQC%u;@iH;}jJU$uD^ zOw2u*Zz3vEB=MW?xBHtZG0>n#MjI-riMoXuc(u;%JrY#MgQRFTKzK*`gZg=0?M$npXw21dt^B5!fL zpi_>T6+}?bt@>H?NRPukg2r&{R8IIEf~_1?{gcaL!t4)NDT2rHj}^Q#Kf)J4NYi|BnM-$ z%Q*7$wVwJ)q0g4gQ1U~O*=_NMz6J&413Ag)6E%?MSPs^f1e3iK6R+LqWk77bQKY;& z<@Z#g^qCP#(a@(Bv7@+2pwDYcSNb&|TTh6czX|4W+2q5z3LhQL!H4 zQ2)D}r}mGcz3&GGV?%inI#>mV4HaX9j5>LQ7uL;K73Tg7%Z)#=$U1+Qih9$k+1+-K zg>N*6G`NL35)s*nPixM1oAExz4C4Z0p0UDsp3!9NFkWJOl<~uik1>9X@haoz7{AE)6~;eh{08G+ zF#ZkWKQsOtNJj3{2#wErzMw_w2 zc!}{*#t$<-#(0JCNybkwewy(a#%CG-fbq+WUuAre@g>H;W_+3PdyN0c_$uSSGyW&z zPZ?tfku+~4<1ph+#yyPt7!NY08ILfYU_8mVz<8d~WV9I98Gn&+gYo^0zsC3k<8Ly4 zit!H_|CsRw#=m9!4&y6~|HAkhBW*^i-HgMGI~nPMndB!45o|7SUj4U${0BJyILm*X z^G^{X==?V0bIgC9^Di@AXQcmysGiptRlGvjr`Sw()V@MY&O=S{X(u7Mifh0_v@QaD zgnim)DSwO*dD^EaFVfy-3-=1Zj_c!EKy`3QBGPnMAks^oC(^D%8Pc3ePa$hH)1;H` z+RX;;5jRB|SABH;_GQb~Qg>CI$6-a$wWTHep%#|ba4EBj^Nlj*E4`V68wM*dfyzai zu2^u07ik-p7HM2L`4qb?Zrbhrj1Jfo8G%1 zr7`)x^zMNU*_*~giR^`Kl8l}Q7z6*-kPpg$?D=;eXxa-;;-Pd7d*UG=K%HJ_zK~x9 zJY*NkUZs!Yy}&d9$tclZ0|8C>f57u&GQug4(Y_b1_cAJc7J5`K)fd#e3OXnQQoM}4 znf9C@1>`0e0Zp>Keg0m2t6mq3aJ|PckhDgqUOGJm^*#nVY|nr_(hE``y9`FyUJ3Rl zz$1Hf`U>oQ0(4LYq^Q9j{iPYCfTVs6+iSxf^#|Fb(_3Kg8PHUQ#){GlPOA~=y9N_0L8>ph8jzpEtvE71ENkvXyM literal 0 HcmV?d00001 diff --git a/tools/labs/skels/kernel_modules/6-cmd-mod/Kbuild b/tools/labs/skels/kernel_modules/6-cmd-mod/Kbuild new file mode 100644 index 00000000000000..2c5fe9cfd4de33 --- /dev/null +++ b/tools/labs/skels/kernel_modules/6-cmd-mod/Kbuild @@ -0,0 +1,3 @@ +ccflags-y = -Wno-unused-function -Wno-unused-label -Wno-unused-variable + +obj-m = cmd_mod.o diff --git a/tools/labs/skels/kernel_modules/6-cmd-mod/cmd_mod.c b/tools/labs/skels/kernel_modules/6-cmd-mod/cmd_mod.c new file mode 100644 index 00000000000000..3bd758897f3600 --- /dev/null +++ b/tools/labs/skels/kernel_modules/6-cmd-mod/cmd_mod.c @@ -0,0 +1,26 @@ +#include +#include +#include + +MODULE_DESCRIPTION("Command-line args module"); +MODULE_AUTHOR("Kernel Hacker"); +MODULE_LICENSE("GPL"); + +static char *str = "the worm"; + +module_param(str, charp, 0000); +MODULE_PARM_DESC(str, "A simple string"); + +static int __init cmd_init(void) +{ + pr_info("Early bird gets %s\n", str); + return 0; +} + +static void __exit cmd_exit(void) +{ + pr_info("Exit, stage left\n"); +} + +module_init(cmd_init); +module_exit(cmd_exit); diff --git a/tools/labs/skels/kernel_modules/6-cmd-mod/cmd_mod.ko b/tools/labs/skels/kernel_modules/6-cmd-mod/cmd_mod.ko new file mode 100644 index 0000000000000000000000000000000000000000..e41f6409b0fe843c5257411a7779893aeaef955e GIT binary patch literal 60292 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 #OG`IMgOCo3_S#Aw;6sV)jc|EBMu6fP>_4 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 V>D^KxU$EWU5Vvu +#define INCLUDE_VERMAGIC +#include +#include +#include + +BUILD_SALT; + +MODULE_INFO(vermagic, VERMAGIC_STRING); +MODULE_INFO(name, KBUILD_MODNAME); + +__visible struct module __this_module +__section(".gnu.linkonce.this_module") = { + .name = KBUILD_MODNAME, + .init = init_module, +#ifdef CONFIG_MODULE_UNLOAD + .exit = cleanup_module, +#endif + .arch = MODULE_ARCH_INIT, +}; + +#ifdef CONFIG_RETPOLINE +MODULE_INFO(retpoline, "Y"); +#endif + +MODULE_INFO(depends, ""); + diff --git a/tools/labs/skels/kernel_modules/6-cmd-mod/cmd_mod.mod.o b/tools/labs/skels/kernel_modules/6-cmd-mod/cmd_mod.mod.o new file mode 100644 index 0000000000000000000000000000000000000000..18df2090edfe2d36f929590bd3054876f86ed9a2 GIT binary patch literal 30196 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 +#include +#include +/* TODO: add missing headers */ +#include + +MODULE_DESCRIPTION("List current processes"); +MODULE_AUTHOR("Kernel Hacker"); +MODULE_LICENSE("GPL"); + +static int my_proc_init(void) +{ + struct task_struct *p; + + /* TODO: print current process pid and its name */ + pr_info("Current process pid = %d; process name = %s\n", + current->pid, current->comm); + + /* TODO: print the pid and name of all processes */ + pr_info("Processes\n"); + for_each_process(p) + pr_info("pid = %d; process name = %s\n", p->pid, p->comm); + + return 0; +} + +static void my_proc_exit(void) +{ + /* TODO: print current process pid and name */ + pr_info("Current process pid = %d; process name = %s\n", + current->pid, current->comm); +} + +module_init(my_proc_init); +module_exit(my_proc_exit); diff --git a/tools/labs/skels/kernel_modules/7-list-proc/list_proc.ko b/tools/labs/skels/kernel_modules/7-list-proc/list_proc.ko new file mode 100644 index 0000000000000000000000000000000000000000..0755eefcad56094455222613ba2ad39bbd604173 GIT binary patch literal 75804 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 HlCS>{mlyYC literal 0 HcmV?d00001 diff --git a/tools/labs/skels/kernel_modules/7-list-proc/list_proc.mod b/tools/labs/skels/kernel_modules/7-list-proc/list_proc.mod new file mode 100644 index 00000000000000..a34a19776024de --- /dev/null +++ b/tools/labs/skels/kernel_modules/7-list-proc/list_proc.mod @@ -0,0 +1,2 @@ +/home/igor/linux/tools/labs/skels/./kernel_modules/7-list-proc/list_proc.o + diff --git a/tools/labs/skels/kernel_modules/7-list-proc/list_proc.mod.c b/tools/labs/skels/kernel_modules/7-list-proc/list_proc.mod.c new file mode 100644 index 00000000000000..8309f67e10c7df --- /dev/null +++ b/tools/labs/skels/kernel_modules/7-list-proc/list_proc.mod.c @@ -0,0 +1,27 @@ +#include +#define INCLUDE_VERMAGIC +#include +#include +#include + +BUILD_SALT; + +MODULE_INFO(vermagic, VERMAGIC_STRING); +MODULE_INFO(name, KBUILD_MODNAME); + +__visible struct module __this_module +__section(".gnu.linkonce.this_module") = { + .name = KBUILD_MODNAME, + .init = init_module, +#ifdef CONFIG_MODULE_UNLOAD + .exit = cleanup_module, +#endif + .arch = MODULE_ARCH_INIT, +}; + +#ifdef CONFIG_RETPOLINE +MODULE_INFO(retpoline, "Y"); +#endif + +MODULE_INFO(depends, ""); + diff --git a/tools/labs/skels/kernel_modules/7-list-proc/list_proc.mod.o b/tools/labs/skels/kernel_modules/7-list-proc/list_proc.mod.o new file mode 100644 index 0000000000000000000000000000000000000000..f8f6dd4b53edaffc165db150f7c77f7e3968f740 GIT binary patch literal 30208 zcmeIbd3amZwKl$wbR-}9$WtUaitQw_<2X)^<=B}Mk`O0$5`%}-b`l5yA=|PoVoOGn zGcXh=&_WqXODUALlwR5b1=?Q9rD1Brg_fa|4se0CTnZEl<+eD)(n7w>nBG^?X{FtYBzT0p(XC@u_%n zB(p)K5}9mtDxDfu`{U`!*jQqC!^)Pn)|R#vPI#baM|d(d z5}i&?q+%oCRcls-bAt*VZT*pg|405`D*-QN&iaUt?nH9>ph)7B7Nty1o5uC!RHsI% zb6mRAWfooIQ_4LTBq^>*ABIBqb$+Eh=5~-S!+Wfyl(!w}B2q;oFy};_UxPu55*W}3 z&Ys{b%PK+(m!~Iyl4Vp93Vo7FTtz_-vZ_PKst$b-S(fQZB(us(>7uP}2`adAJN&pTt1M{3Solw(b=vGL;6Ruu|tfC*yN4lepVHnrNUyIxh0?dxBK`R= z4O3!zzFF+W^4gVHY|o7>UQ{^^oOo_>zk%w$DtuU;+pTp}?Ffzay#S?^eH9ZmM3|Vv zETC^Smdx_pZH?z^-xH*?vX?+eo_ppdrS>ME$E2dt1f+uXea891hFR*gf05mV`3VRcV)eAxRZ7}FP%?Lc;pfCU5pk>}k z!%uvg{?9>gyi-O|W(m0VUx*6cj1f8?)OJ5f#G5s0K8AK@`Cq`4ywgV6F{pE{e-Xst z-LI(&{O6FaA24R!wLqzh{NI4~dCxHBJ>IO;rT%B31l}`^(kDS(;eV$T)LBM3iT(5b zPZM>nQT~Fh)HQ*9Q_A}ZWA?96@g@H;$nu`AE57P~32X2Dq^ADpKNaHeeo7DUroSf) z>LNYBJN~W2^ub3P+@9TdrXlVM$tS`|js^(50 z7{L_D;5$amX^`u=M({0a{jWv^c@U6S5nKOe*d&t+jNtdEvpe+yU1S6YY4yHu1pW(s zUtt9Ilc?`C=Dr2;^G2|Sy1LJ(IuGPEm<0TV_lQyZ0mz$-;O{FzK48o(iYRrf5nN6S z^RQv*aj~SJBKxB8ID<8<8>KPw4f{NDWXNE+V87m<>(V1e@Mpxv z6PkR`2wqD}K4}C>G0?+kOY?tPmp*0$D`@qeF=qQw`g05fMfd(rmp*9(r>OEvM)@3+ zJ_9C68m}0&4IrO2g8N|N-dAp4(+F;XIeY(XR2~aWeg{3z0{M4w2G$%x@xR&KEiPuSiyx zxU7)-De7|y6|6Z$FA|IPJ*6P3nK0nytXlVfQ=LO#!kTOSiR+w;Pir0%E>&Y%<*sV@ z*4q8C31wCIXohodN29sayYl@4x?@^p6)mVUk2(XNCqf=pvzwavPQq#$#m8DZLD)S| zsp3sV?Nm#7*CDIMD(-Zhg~a?%W1Wk)R*?goAAvR%Z<|l~%1zZS#XsIxi ztm~0CZx2;bzHftzk>Z`!ZZx#HrxSzJld@lio)(`PAn#_`#ZZspF(xYP(;$oDu{tUV zh4;k|sp7;!Y9F?LjI83*D#`vD>{}rD;(bgs*-jY5)GU&Dvwaev`1IP7(Wcctn|eD? zOiOTrO#1L9QsJ4Bqx#1NK^q~e}L2lS68Sd83*AnKNpc4m!&iPLu{CfiUFs8|h4vFosmCBa#=vdZ27c1mWm3Y)eI4NGS8=55&&vzLU}FZk>a zu@EIS!Lw1JLKUU4-X(M0uTu4fk{RX{GD;&DQnZFCyyz@|me}Rnt(i z-Ss)p^B;zEOS)!LM{~DOL*EJLx}juS#Wz9Cqc+gHID}g=;HDOJ--7jc%-fMHnu`H# z-)vg6qA;|~F6DInS1~cuS8G(fjaq)9KrDQO`&#fgMg+O^KR`B^zIjG*2u?dNH8!F^ z)ZC|QZGy`LS^p1^3oWbEF5ZY*jTAPN`usHz1~^{yI_$r+)V&ZzR?&6%ESoip?8vtT z%IPbgV|@{M_WQ8s@*3U*lzlOB%IkP@HSIOvrF>!KCouub_Myk}MNE{aqIoE)X!c)^ zqNXAi+Z@|F8@t@%-$U0C8L7oT1Q(d7S{%TT#L(i`uwT;pEZ)kFE36j3&pDga;xaVF zCZrZOVrKX=7Q5k{@#k9n2hsy{w75;@SZc|!n5Q1KYNK}*nmRwBD$bio8mjJoK#5ry zEbd1lOb(>7%DR!+DXPMvRL*wOwvH;*#nbsJHP-iZm1>BsvetbHN<8ML@LBdbe3a7$ zqc@!TJKn@IcLM zAAt=e#M}zj>cA$pf;Gx_7+x_HY_Et@-}geU!Ogt4YwZtqa6MBM6@mTWRyVQG`~|SB zB|H05hWFo)<(xudcaDJ?8_poq*yWI-yPb!TV>(Y_DLu{s+G(7}P+A0;-GgS4c8FuI z8Cqsok3d)a-$#wmN*!w`|9PkpTBRw|UxgJ8tuyA(aF%~SQwxalwfqu%ht?aFb+9Y5 z!k>h~ggSJ?TK@s`9NKOK+Mo|%|4raC)N9yeRt^3HHSE(hn_Bvi7dpW(Uq>WjHv9jL zs-CK2oAv$+X~ZGJUjs|%@IOdpabuwaYP)|cH5}L7bo;NNPERu`oJ1f?MiuIuMX`b?ReBf1?=x#c)^4i%HU_JiQ%N32*~dfT zHPy4Iz_d4E#F`o=EUXZ9;X8<0X3c!-AT_0qYQkIrMNfjA9kmOr7pRChsBPeRX&tRy z!h}}K+GbWuixsxErIK8@k9D+mDeGt}>u7Bod+If;qqQqo_tq<47&C63>sZBDK{ltk z&9kTnWj}|{xe+lZ-y@Jx>%3}SMzFkPf&Ik+|8@4CQj*0vKkd;{Th?m?zTb~ z8rCVGmwpLLX{q26Kxl)jVh+}AyIZwhfmx~rms`H=P=KcSwsj}Ro(>nw!^?1!lTx*3NUgVEGRrCawo3B<17x7&tc(2*-xnnj~(8} zV^=8O?U>_WIAdj~hfZpg4N}+2-UWe%rvt=LL-@eyDtxf!AS!i-ho`1h_z=fzXo+(O+fFP*kj<2NC#y4q6OaV*Pz9$ePVuOcO?2v3Y;Rb4pv zF4~;R%URdNhpG|#3J9`pF+0)k+FwC8bxUe~40XN3z6usm*US#_u&P@JmOUm7>Z4j~ z>PxNrQH_OBU&cD5>=U8Q_2s-}nc>((R@GNBVcE}soBGNiS%A+5pQ_$pw49gdI!M1h z$V9+)he1>^5wcgKUj1w)YVF4`{rV6SVf$NH@cKDSG}uqT_0(50(PaMtY}VH>(QIFh z;p%IdXtn2S6_sOFCbXyQQ)2N~%GL<%J@DI#)edyzcMKVht*J0aL!oO7`vvsU z;D3Qe|C+%^geLzFu^6G-G}Y`s0>2TuQ&X+}2?#E9L{lsL5gP9yqm1^)HU1l5dZ9-R z-hFrYSCix(Gm5^52@U#Rp%r@E;LZ31|7A47FO1ow@@M&nNn}qL9Na(VKZRucYt84A z{`+Azq2Flg8UI4m5B;a6p7rk~&YsiM^DW~fiQgKPY*erMR}%TWE_~D9M6A7_sdxMr zVA7!%HT9mqjhOkJralP1i>ZWO){H76_#Dmm_qwpb2wqOY|GhC6O;nQ++zH1UeIXMYmmHtQ<=3BeIrC*BC*YwzpS|IwIHO&`Qhms;<1r2>yoH zcvV;KFoKmZSC9*-@^&Lw3Uvb6N@TYYTt*7=no;=*=CuQtk<{~>Mip(8mMgfDD!*-n zKA>5;g(qsj$ceaRKvL!}=W9IU_U3I?gK zzZ>&PQR;ICUn33kxvKpjE8M{csBO8ciuU$^JGh&+`o%8Rs*pQ)KLsAmE{pDSYTZHF zIzlb35N$7W-ND;QcFSB<Vl@s-m511cWj>n|vp09A<1<8SQMAe-P zRy-!NXb-74xwLZc7^w+)a*T|sB(JnVK}W|$#CW)+vOa9 zcDkJ>kZ(G_!%}-3JTXE1w+{+cc0c0iveBJvjbizra znQ|_NmMUjAsv1ro4={}xxSb!Ois>9ccOGXE1mJbf1Mfx7rKo8+Px1g3SSfKng?W@X zzk#*c&JU6HIqUiJUyxJk{1yF_IXCj>Ti~JGc?&&MIFF&U()kB^p5-h9Cw}J&c+Y^7 z#VA4NZs=i^vlMcg?L0#&>NI0<=Qvm5v)Z{660LC#gY#PFGf<7W&O2y3&#}>VzH=vX z!peu&O_ikInXFlsorVcIU|1+eRO zcA#t1c^0DasAhF^b(iCIpW1z!1$YAlVmOyTmM-TB(kkc*Y2F$c4*v0!? zgB^nwEIi)xB6@DJ4^x|NCKf93X0rVUD1G! zl>HY7u(5^-tFbW*V%}^zYlXx1vrxyz`LoB+QHOmSS~i9`0+_O|rylB<$l4VAHrDec z>_Ph?Fxj|(1E8}wG-_<%(CF)pU0Bn`g|o7dh54}kJ*-t@W5AE4{JDJ|^}UF@dy*ri z#>E^dJrmAkrc~pSs!FW&v&we~cpYqPwWt+GK8`gT48Xk4KeKIVjaV-zjZMRVe>m)w&m?WpQe}>d*U5%S88s7dGmbl|mxo(ntos_R zY#)ab=Njvtf$=qdjDwEv8tW)%Z5*tk5cm#b9bN1+?&9dyazS6`K)!Ag0nLwf3N#6w zMrE3`niR~#)Dk~zKwH3~-CjCAI&WjL%E^!cI3Y0Ua>kHB=0aB%9+Ltbk4bk29+R#I ziavl!H5Kz?r=p8c*i^y~sfzA_zBH9`zV8)sDNTnfyjVuN8y`(~m0gF?U{9D&)7@pC zB>wCtpo2~KaEWDq4_r3gTRDMRKKm4WHr>ZWscphVH2t9Lb7)hhivAr2)$~L6w?Nfj z1BQG}-^Vc%WB4z}RGJPOdL;iK%9`%dl<5!9PV*>i?eun@tv7r^C`z#JM}*$IrWBv`Qm z>1O*?2x&&wCt38U!~P}+XRjPfH()Z(DLOc`zXGW_BUQs#BTM-{hh;s> zxx*qdyf3MoJF7Nfm2im$Zk_LQ-=_UrBJM7uX;}6E6wtYcPhsortEl8&CN|k;Lp08P za}R~dLu4Uo=Lnykw%bKi^6vq3 zw1^iz3_E9WRG{p=*d3g+nK1ca>zt!C)jk&s=zNO1sO1|{=c4jsFqQBIME1_7bzt8R zPG*#IY5ASdqgMM88uc=sGg(8=c1%81 zIZ2z0z_OpFsik-VI8}~7WNVyXSskdT8$D<3sG}Z!fdQP~7RNxCcAOUAkJgzWEc>re zIOp|}t3ded0qX9Jk~=_D*n7c`^Jej*AOd!pR`6}#>mWk*A*_Y-LGe!vcsKvsSQE#s zADV^z!^m??gDW=p|3qa)MybCZO3vpGr^K)#pql+=yADN2H%5Rk9j4=^?d{KdeHfibxfTYn@*ZOWziOUNyIbVd;x-A#?2Hk2Yw z=h4e)j^#ABa=t6~m_J9+sx)Pteu{R=P$wK%H zz27xgdrv@)b18C^^8mIX!}&YXF6Da_LJl=AvhF~+-R^?bGzFF;t?Xm5n9Ylee*nU? z&&5vAyrkq25SHDFRcv-D{s6*fmrzM_#XBG>>@#6-&5`2sP$8gr%sI439`h~~&mj?d z%m%&mQ5BF@FZH=Wk|ZtYuPN8RM%NRoXVQfTQ6{0KxK zoEcFqcu)x!5V9YD6KUC2{yuoA-I&G9T8`Jx$c*{njjy{wcMCl)ys-xJYv~bsZg}JQ zV5_B9=-Tkci?DDleL~lS!To<@3GiqR4Dl4dOcUcNa!RK7FUa*hO0iMoCX3`{lh2IY z?5EcHk}mQsoAf(i{}K8UxrNSNIM#ScX+7+n8MnYYEw6>VbMiluzhDKK8_tvLD*so(DBCq&v zLR#5hB|Ur9_ZSFMd4~WzJQWr!H;s((K9eh^>IKEepftzRw^8JK6OPYZnyUB{2>Z)e zh^15VEU2j81a-RmmsE|`*KGA$0j#`D_j|2@Qfh)CQjo!xBNk~0yUv#TS&x)`0Xk^; zcaG^S`wz6p4^)yKHruBX@nAUGq(dI+)mH^Ys%`nSMasq7c*`ZlPa%!t1m@IoY4x)p zOncM|;xaY?*aH!l*S&}mpM8Lo^D|4_i%3)7!cN$7MMVfiz+O$&K3lvTL0hoIc_+kY$YIYxedmgbkuIbDwXDy;T9u!R57eKB z+_l@_-~z=hpSLarWiNAqpQ|{n>{btmFIZnjfp6W%$W*T8vz5;{W@vg;wOmtlD~c+N zbG@-U{6Z~+Xtr2YUoAV3HtC8=}E_U(mwkW$Z8wnha8yHx4CEP%wy6!J06o(sPtx7TF6}1WVM0MMmqX0 zTU<$LSpOz|V6d48(n3S|M(1FZVTYzcPTp+y?EYMUc3hT6extZjo-X$3QtZc@3Og1p+&RZ zSd4<@!7QfMs_HhQ1CL34`QF8@)Z|@dt#QyX?Hu0KvU89d_O9`rjDi5WVedNMc_2de zX6#hn^~G0%sI~ta6ZUSfZUqr$h4gMLz7Ir$cGUE`U^##6rj$79XE8K37XGA>*{4(I z1y#wua!z{~MP)QzIVq{$z42B6wWMv32ImrV`W3254CFFyN4ohrD20y4yekdw8_05! zn5=TH2KxriH*^7Umqiy45gS>xrgyzz(HndLvJUSCgC(q5Xr;XyjX44EVVWv(FM4S; zz3qlYFWvdy!Z_Y7`kgc7rzd3IPW@7u>HoP6YMZ7k{}L>`w@Xt#KbBW{kJnVi^2uyc zd3%l7#HSfh^*@3StMHy^SP#<}VKD36W7tF}|9{aKC*{Vtn%LW`U+S~`AEI0D$(r&( zHgqk5UD8XRCFsRtlF8N$gE5c!Ji7CkyU_t+YozNgM9;YYrliG9ToKBk*Ht_w-FP98 z2M2X~;JrQO5-yyN&pNuNL>Xta@+aBC!jQSL$T$U!x1g z0qP2(5XNo;x+hSLGsv1eijCuXsz9_-?YHResB6;$X3%6iJ|4(bS*X0Gs!&i`fR{ zqZKI^bJ3Nnhizpo)!R^tdesKyqaLaOD~*L^e%oDEQ&s_?yBd^jZv=@h45Q0$Kqh9L z>hdq8g(^p37jnFf$bnW@DRu5=d->_{>QipbFLAy2R*ylIg zWra0Lb;dwDJPR1J?ZnLChOei|i!3}Pyu z5u8y2?!Kxp1D&lw-s}|x%pN;uJ=|$%W){vZLA7WONu-(**lA|Zm~X8NEOMG#%KYOE zD$Un?8C8nIg|&(AIzKp|aqIJ9k|{2b1>hOc&7B@rN*5A2LxhcmBhmcO`=Y`{L>_#y zX>7DM>>ToGqHqR&(HX?;;7LoDU(&5K<(xub zOU#pKfbH(+#H7FFBD2E&R-o2QjaXS&i`I4(sgzdo)uiOO<0_cD^u1Q=)=^=sE0iL2 zbBy%M3rHF3(ZtHJPr3-hJ8BOy$Bl*E*mkMyX(Bm1F+CDrIvtxzERAI* zBV+MoJe?R;M~nV>E;qoJqVQFfqg8WsEImBF^x&FR`R>t&S~{MZj4w@$rP52e-qLI; zHIZ355gW=Z&FqUK*|KzBJe`bBM6vHpPsB4zS4Zf}QW5^DmBRN;A`=s8wtlo|#JE`&z^M@?D@$qVXNDd=}dL zk7~%98q3CpCgPE06Y>3EJvSN_P)Z83V%gMWVtCbx=<;P48Fh3RvC#SRVgF2aspMEr-q!`a+QfZW7 zFxU;UQ8D-CHI-JbjcIFpn3SbV+<-6bVe=U@V=E(PYpYo@eL;XMOV(Ve|rAKTd(?dpi;zO1;mP4)Ii_w@C4M!WlWMmM()bSiwIF_j&U zr`3)vJ9b95Zi)8xtJDFw0+k+$rc=JiX~IY=>ExAba*_LNKzS{@j814`@1>^@?5lU8SL8C8Qt2|-Kn@O zTNJCbVl#-w@eXfB_4IY@?Cy*X47Lw;Mz{5K^={K58;{3ENHA!opbMC12J*$+r}2fd ziS%@o1WOaiOtaErQ9$zwGe2kwkF-x6NGGy!YPN=0+uGON9o^B@8*Sh6v7KH0ogGT+ zOEf+apN!H|gF@lb7em)BQy2jy8Fn7gVT_X@+rcBB_KuGJXm4M%zrDAkucvEIr^-7W zmBJTIA>YhCy>!zVtRx-`$#7(-^kvlOWNeDmC6OG(a%Zy`WoyTdt}W56JA1e680;Tl zlP0~$Mlp{`g;VZ+g+@_USoVWzI+I9_MaQP#a3&5#G4UbzU9`_YEYyVEef`H{i3d6dqy3!&gMIy?A>`3ATHh5;($PWYFHd9mS z`2M_cb@hr++rg+BnVy7yR2j&SJqo!pFu@ygbO@?7nLX;9v9{^yVU%Kb3e(p;*+G%~ zA-oZ&6%=!ZO>Ti^!zf8v5l29{DjmZT%jSwLHy#~LOu#uoTC^KrrC46%z@yruE8H^S z%hOPbDO$XAJf^a7SnDuUM0AauTp~6>CX#{XWW&?ROkykbA4Db63}v!S>B?Jlcum;{Zkb80!&Mf&AcDIyMv?o=!uHXqR9Q0f!as z=;|LlQH{j1G0kIk9D|G$G*4kahQw)e(N?>UcM0MHwy5y-YLs53!JD(u=?wfjESK~X z>rZ3s>KWM5-W%=e>FMm~g5Q%314|FFNQW|e_}DZ83UoV!A){mI)btdKlO1_xJTb*g z_jh(ixAe3}wQXXE8Tt_)jZK3i&1p^xS>D)CM#z3vt)OnY2Ku_ePKWl|yh9A9l88LA zY(7}(Bp8XaZ_)l|0_q7>gYSXrXQ#28!|CA+ltquo>}KGB$X7r?RDu2X_H}gjcW&u! z@9I(c#pdZ^QIj+#I6A(wzqhlSc84v;M~~l(1)CaAu&RykA10;My2epRUL)94$k`!u z)5}5|)OZYvNy`q0MXEUtPXhhS#jz2Lv*wxe7w{vg+p-XghA~pt3Li=%)Ue?z1(K+{Y z4QzpvWC5`8BL1dRmLXAt#_onFH9{$k<|JyD-zyl;RDbU~p!tpgCqfH3mh5 z=YTU9QLGJcOdN5@D$tv*Gu&D?q7$`G2c%I_alKFXatIW~HrLmGqGok$ina)-WE>7Z ziX#TwW6owLVu#=i6x=M^7n>_W6Na7_Tc~}7lz{JaV{e2*q@zb}4@gEw;+f&h8RRP_Qcwe&xF|HoF$c1Qjbzh@6dgU7UmaCV zd`Sfg}>3R!Ok88d^*t4CmyYo6jjg^j;?|D-9jgaLYfq@ znLpD)f;8z74(W$tnfQ#o8*3;|VJ%02A^ z$MYH#xPJC2@I)MJl9wWXgh}$Lq;OlNGFF@1qju|M`{Nl?7o!hZ6n<>(YuqP{q+ zqR@t7`lH7n`CXT_D>&?BQ)82g!$#NwX*jH5e3YV6%z6^agk_`i6Q3*eKEX^u@}tr8 z$kgO;6y}jS0P%?p603}T5mu{NADaf*;dhY=!a6W5^^Jm~(^K4O%o zn~NrM?djQQj>Db3J$<`)r-@<-;DYoqmX=<8nS_p51~%IrJso1X98BgTN{Yf}MyQ1$ zJp4^O9V2ztM$Fzy_nbkrh1eC56`y&CH{ z!bcc=tQbNlmdx&pA}*GVR3B!x$0kN;7@izQ?%R5IhPSL)8^-SdEo*5DFKb=a*4ozA z8jegRQ;|$2t`n1!2lF}0bZYrXGIc;FWBaLeITd75quB_Z9I_zN@i8dfwBeC?M4b+Of_J#!g=ul)b0i{bL>WmDfV@YIZ$ETC~BJethcK&B^ z1Y_Wo98ZTMWB706KrB5PSrLx(q1#M$WW!i;dMze1N|Qlghi-8_6rS!Z*%gkbQ_0kHCNiBofH_3i7iV<& zX*j;j$bdJBXXBCN^u$DjBZ+uAf`b|iSUM!D1P3tX2yG7$@)K01g-0pskUeg4;<-L0ADhD@!r%yPwU~K?_Cy&-gpz`jz^Y+AWdvqsLo$U7#K+hI_Mn)ZV_Tu{nr~Hd+Y0ZOydMosfK~R2nvue&yuWj6`_Aq`-BZpp z(5+DWAkKkX5URi`5eD(@_s>}1o2T57iiHxDHKc>x0hQpJ2i%B8V-))EX8q3?;C?8? z&~XM|Eb2obEjhVEEg0%a@9DgUE4l_k(24!!07tMqijMoK5uf8AA>NbnPKs}-D4L4$ zCQ0iKk2!M#q%#9|j>w8OwtPG!w{kQ0GP&cXal4 z&{2CIf|{H=r?72cdtX1I16t9%d(sCz{D1(q8yzahxtTU=@{6Mr)0y#TZkM9Clg}F% zF@HbEflF?0;|nmjdWx@TgXD;i59s2Cp|UU@y35uFEyTpr@#HXeSlnFXj}&N$i?Nx< z2B;U3k{Nh@ApSW@DT4>A9aJa&ID{ezMtRNl24x+aY9hvL6 z5!Vzu5JPphpNIn%N4oht3W#VjfunvlP8azk!on*lt)oy4T{=W3xBS}T(uZSRzVR)% zpMen{4YgSz^T)~FC~jNnf>6&RA0+WMdNfo7iM=bkrWH!X&Jtch2O2oFq7Zj@#3}1( z;bC5H^L(=)1F$KQ&QSfCDh*S>CF``lz}5E;Q4Xj{rm*6idVpIw=tEXCWOvuVV03GH zclTx-yy2NBX68FST&BVMN$gKIursgCItTT63o*H98uf%TA7+~uDh|cC-OyWy+P%Gx zu75kX^!0WOun)w7;B0&J7O-Huo^eFjwwbPfC*q?8XOoN=BkM|UbVuL7Ko?yEky9Un z*V7(^Zw~WUiaN}}883gCQ*dj^9<{*F}zoUsagUo<%mr#Vi}TPvV2ufx~;1rH?5%PcV=IT0*JPj?>{ z6NencylNz!n&R6wzLZSIC$Y=roK6M{PB)2}{INEp_;M<`nzpO_p&Sy+U$i1brOk4|RX+u1wViQDU3c+HO(3Iq21?=P-hu5ydUs+zm-WY?2-D-wY7=7DDhJ-k0@5wouu z9+FTP<8Q{`TRQpn8Y)hPP0wh+wLGKAZ5Iczx8RIO&&x2`i8zi&`ADDdz9Z%$B!eHpkfy@@s@yg^iNo6@hY4~G$q&Zx2!cYJOg1shu2Aa{4aD0GTQ-RN zr5~#_`*^zUVE>OBSh}JW#pL@27~EKF_>kTxa{)rZwFER5j*O2+Im03iBZbB#quyTm z$pjhs|JmbXJaUFMBH9|3XKSJ*^yo!f2OUmfba-Avmv99Si^ia;bgJfuBWjw8A!tZL zu4Y+6&~-X37WT?g5eW`<_7?24L-b4#3N*vh9d&a(I4SXRNB4C0_o@EQ_72?t?&!uN zvuNiDom;fqq~i!(;^!_?^aZ5W0t`(jqui4bn5gWR62y^5pbfegp*3*6?P zdi8g9ceW2e#pG&-ACB=&HEu`8#W2Y8VwY#3;fZ~eY?my3Y!uJU)#M@G_(TSsq(xEO zTkIg==j!kL&o+gZKm*knht9)K+fO^tHr{HQXOL4*Vm^J$s)l8?B5l#wawS>Y)l zexz2eFr!CfdiICx{YS9l=dO2U!L#|Rh0dPM(1V`#6F9`syEI)Hp-0v0t>OuOgofv&xMjq2a}FkV zGlAPzoPSw0@!)589F8qMoEU{1VBBfkTH_`b0V*Fa^UT4Vc>B$F-W%Q4+1uHV$E;nw zU4wW6)7MXr2gdo4H-)JC3+|rq)PN#UEF3+>;$stZTY?mvyp`q@c}Fica*r73YBIXk{|Rok{~ zSr=~Vhz})VNx8d-tXllhTa1F&iSkK$i75AHs<-};OB2rgb!DRQszbpaz6M@EQMsw` zLkavxuP+*)@n*WBv`=V2{tw^PRmXy&7bNj!HrMY5HsBw<4@m6`|J?Xls)S_FyHW<| z!aq0Oyf6H7E4*o1@aI-|?X2JrKfF{x5&w8$vf$5+chU?0+~D$b$p}LfmEixJf(lgo zl8?~(X=}ljRTvW;y~HfcEsT^3^U2xc<%Gg4SUWofybO{H*JfVj@wJ-vJ_zUIvE($K z67YLj;Io3>9)s|Gn2Uk0FW^lTWk3YHR#-?{O9LOYK7@FAQ5l$ISm@P)9fG}rdj(^H zDZ%}MX9`{{c)8#=1#cHTBKRZ0Cj?g!-{9vM!EJ&Af>FVJf@cd}EO?dR4T3ib-XVBI z@G-$>1YZ(-U$BVe20r|Pq!UC(1nC=jME44wBseX2z99Vy3Dx_7;NybN3ce=zo}d?I zNA&}O^@6Q}8wKfm$5fBruO=K9JYVp$f?pN9P4FJUM+Bc1d|B`vK{w2k`kf_MC&)iC zg8WTF?+}a%CI!zHyj1W@g5MInOYmXArv-m6_!mJFZ&nc>e!+UdHo;ATeS)V5P70nS zc!}V(f;S5u7JNwXDZ!To={G}Yd^Ze;M_n z4T8rBW(7Ykc#YsU1aBAoq2M0`|0+oD!qa&8`WE9{!6kxg1bYPc2%aZ+rQnT%-xK_S zAbt6f`hQCBCBZ)n&cQZ9<*kDB^+uw*1y2x+3#J9n5xi9JTERO6>9--NpC1eUOz;^& z`b8`%e@*buf*%Nau$@sk{pu!RNN|Z@tKe$E0m1!(R|;M)c$?rof)5EkDfpt`8-gDQ zR$;@S@fQfvkFXQHQSf*{`q5R&9~GqEcP08l!Ak@`D|ofwR|Ibmyjk!&g7*skMDSOF zuL%A{(2eb$#+xOGcl4RYd+dzs1&x#K&yG z2EjFgeS%TJalvW9PY8ZS@XLZX3qCIRmf(kiHew4JHzc@FaJk?n!5+b^;KhPp5d6B} z4+MWA_>ADof`1nLP|(KMJig#E!D9ux1y2+l70d{pD|ngUwSqSa-XZu?!Cwo$ENI~i zb1ZkkdckFan*@6WhXqd;JV)>{!J7o{6ns$dmx9j=(iin;+z$jx@LdI>8wFPgZWi1j zc#7bJ;2DA!34THF>w>on9ua(8@L9pv1m71d!j~b4kD%ZJ!8XB7f_;Lg2u=!~C3vmi z&4Pyo9};{@@MXbw1nHYwH2y5XdciiqO@e)brwC38o+WsR;I)GE)lcg8JwbfWis{9I zs|2?T_6iOP?h&M)B%*#s1t$g15xh|F62Z?3UM=_)!5ai`7W|IjzX{$Wc)#F7f{zP6 zFZg@GKMKAr_@3a0f+oJAMtqkD(pT1qt`e*jtQTw&Y!O@`xK5CM6_?s?73>!57d%0b zegc{5jR>A5I3>7W@GQYk2wo(3x!~souNAyr@SB3S3f?YwSnvme4+=gi_;bOh1pia; z4Z*(%{!P%p;g{x7Bv>jK5L_e}5nL{~R*-%%lG>jnI4(FX_zA(!2;MAsr{GJ1ZwvlI z(1!ye^;<1SU!o&=g`TfsjHzAs2$I%hrvn*>)1 zZWinl+$)$6JRo?X;FW@36TDCGCxX8cd`0jtf^K}pmH6lo+$FeIa7b`mkpA~HRR2mr z`soUyZxK8!_#?qz3jS8`kAn1b?9{FZUymiEF9#FW2`&}fAV|M+M&)}1#|8HbeopYK zg0~9NZ!1!}hXkJ#d_nLHK?`3Ir+V~zzJ&FHO9j^pb_wnhJWY^(JCfR6D0rpd^@8*x zi&TEM;6s9c5>)t7JC)B7Y!qBBxJ@u7m=ruy@M1ywRdwp;2Ep$N-Y58|;M0OH3BD!x zp`Z_6(x-mt7wQR{1Xl^}5S$V`OYmaB&kKG{@Y{m-2tF+MAA)}uJU6Vz`=a1C1-~bF zMDVAAzZQH&@Et*;PWMwLI8U%eu)JQEuMpfS*e%#Ec%tB_U`FsA* zS_|}eLBV>#V+DHz_Xv&&W(Cg^yj<{z;7k>F~ z{I1}Af{zM5E%=h)TY|$2^>|Z)XA3?d_`Kljg8wa8)F|>1tQTA=xL&YJ@MOW$1P=&a zAoy9q>jZBRJS@0wksfcm;7-9I!H*06K=3Dm&j`LOINGH9$p~I6_>ka}f`1dV7Rx*Z z&l0>?@C$<95qw1OO~K$2-F|`K7Qr2YCkyTqyg=}?g0~1hDELdk{}g;p@LfUE(c@JL z&J%P59~69A@IM8AC-?`!Hw86TDUMZowA>-xG94 z^mt*xHo<rE|%ufn#_ zt9&ip`Ww4Wpo_RrNNGBp|>pQg$vy|UOCn8 z5@G`Xdwe|G#=zcJ9wr(BE;ACdiGu zR?@lt&IL_(83i|8i}RRMl-tJ(`{=T8~5H!W{DRy#nc68zj{S=PL6s8{%xmLlo#GScI?>P(|aBWT=t$Hf#MHd+w}IaV^Ka%SAOuy#{g07C~Ax}q^iB=f!vpW zcG>A~Hs1Hp_jc)SbO)C{_a9xL>_guh8y$>KB;(O7+q+f&%=E})B6?yxF%cgNZ|xu4 zA5W;Ecycf?IyF5yIT7t1O-_dgkLOH0slK^cDF+nb+p5R}H%<&G<;VXkB~gF*oXn$m zvKQfN1O7YwvJ{d%Q15rP1NB)M*PftMMwfo}YLv>{nTJY6CFF5Rl~a&^kk84LE0j~1f2pMNxhVg7NnhQhoZ|djB%RMC z`4nt+81l&>B`UKAWcl;+Ymwq}{M}Vb2~&(;rUGc{CTvQQC!x+GWRUO zb4BH~e7@d~=lQ`0@$9pFx6VV-+2Bk@xO_Xa*MO}V3(HUA^Gz9eUQ<58=P5S#;k?(- zeV&u?*{ot{uXhJzp7FU18MMk=R{`u6`xuJnKaCtW<16mFSZo72$+)wS&&q26?HPAg z5OJUe5y1QkXoQn-x4WOEPh_w66kWyAD*qSI2{+>#E>Ydky*kUQB-QtZu0sYJVqL$( zVu9afQ5`a#a37ql^kgZYmG?Ujm7dCa5(q2Z2$)SIN3#9Sqj(NFe&>0>c?E@6V@O-R zR!V{8`7%rGGE80X%MtLSEb~#)=dA^`ndO35;7n$v9c7tYm>hDSlrrCkh%)C3;!{OV zX1?!qlqo*gKc+GRx#VQY-}%MXRsI=J9!!$J0br$U43$d@@l|WHnkcH}Zgj5&;=K^S zP+K#*SW0D_homCc?eu*I4`nZ7Cb^r7$(XWY%pG^j0;VgQ#eRbSG9@!r{_l#A>2|ok zM_TC(ETZxgXn4ro<$fG$=SfR@i`bI#qR!n^e#nJ_Z&e6AW?F~z8wwlzYH)7srLe@cnMz_cjGJn1F$NE z?k#Sl=Zn%$KvQs=AoI{XnQ1RV9sW0l&hL<& z`TqpttFsCNXCudZ1Ki3gnn%fE@?chEmE@Brj`uu-o>d|<-Szw!c~+_W8;m*En?eIw z6-D=f?f|riSjavBt>sl`ZL`0?W~nz>J(+w~x_obmE^j}Iq;DWyh{{(*)mdA8zW`qL z3-;bs!iGxT$BOx9E+VB{0xtq9WgV#8=a-?>PMbCIKLBzzWaqnQK()Q4xtKVCAV;OV zC17Xvyi7`}+Pf6l*#&~sc!5eFg@V+27lHQdB0(Cw_rUyR7Y7!hPLo%J(Px(k(ya3L zq0>N4ru#m2)C|*=mGfx{}dLRwJegLtl# zXQzA!&mnns%afxjcfLI5mJi{1fjkGw2c}eRSe^^Z`%!+OJeQUaB~@-D_-^!8>CMl9 zFscNZUyd~}w_2XVULl5%yGW2o`7kmT%X78&Hl&!lM3BYh`;f6zo@=~s!j$GN6J(ip z5oDKJD;?IBkAjdod2T2lM2&hW)a2b3Mxo_`tQKbFHb|-F@+4|B%JYWuBxoXmp6|Yw1;GQHx*B>JO!7YB%a6gH2SSvpcePI@ zdSU3<<-o4dSZU~g(6D!{PiA*z=!Xk{UFWO(9eN1QADo&|-u1dMO~Dfo%#s&E7w++iVWqjbVCU(Ab916U4r#vDT1}t$ayi9ieh4 zvG-+-Z4IpTBJv76-JAIXEn%hJv?4!azi;|V?^y`z=!-nd zp}(z(tno$e=Gc#EwAL4S6qD3bwg|An7kP>U^l7xo7m1P##}+X)`y!8#=1f~OVS}%_ z5jyW>+j(O8tOc#U>YsrEFDI2UA1TKuu-sHi2q_m}@_SXOlm#8W>L0;|c#Bgh^O4fV z0WL|Ugpe}72q{ZbDU}_*$O;V4+o);V>Wfg1y*9ga19Y$3N55Zr?RL)1NFMV=9>*H$ zb!c?T7db*D-m2?P`y#ny!bx@|_3yARav$Z`r_pnLkwetZy|zf|LSLkf9i5`lOMH<% z9L}k>=4;X$rstlrq0&r>%K?~O?c$|ocN!xE1STMtL=ynlJq{Q(QEC<1V?z2Mz6OcZ^EJUzHDbN0JTT$$i{_0 z@34zDqVDZ>7zW(?rd{+dV0YP(kI~kB$1dFk^lNtH7SjA(yX;J$-?SsIvEd)sh5Lct zXGflfE~G=%K5Mzz6-ez+L1p}f{)mF?{2^>wj)2Fe1D|T$Lz?F5}=Q2 z^cg!sr_%e0U9_nQQm`YJvZ}Ba~V`X-vo)TQ@6wO0!I6Jc20(yc|`5;7AogLXvPM+vQ zLdXUBb(+>*N32Rsb|ja|zTGLWL2g5KYB16-{#ENp$B+jb|fbg=q@Kz zkHQycNB-smda^Ejd3NN>Y-+b|`HAev3UcEbr??A+pUsZE4&U7SsFU#;Wc7#a$PP}U zPdMUwypSEam=gS?Gru>Y)St2!Jr5OeUeAui79#nxPDLNucr!aPPDQ@ODJ(}Rl@oc5 z1HD^I!_A4*a%A^tG&d)52HYg?>zYY{oX8(g$NQd^WMNLEg-Y>&Mk{k7y_`>f(uJ#Y zB9oNWUo={i6R9NaRert8$cg-b)@6}juU$EjzhgV$E%9qFA}3N;3$)%ZPE2!7Rgy-o z$6vY}9k#aSsKxJx(f8$8wE2GL*WhU83~J=(>TUgc$TB}qo|l{i4myEKE6{igdmk`y4TGCSCTdv;B;+`y6jZ7AZRlh0!5r>2E7b|EJ1-~eNz|z24t`#4 z!CRonRjMu%^J89~&Bol!VQ{=)-aOXHKNr57Qy2{7aZY3cDGZkLnfo4m(N&Qx2Dq^o zR2Bx;{}pXyFx~IGh7$R`+$k0XT+VUNk1|EU481-67g$y_PY_@IF(L&Tab2hWDyU3R zL4YNFj^iv(0xJ{DvYq8aQ)9pv2=23-x zDjlrR%&XSH8qK^#f{-kXW3eC^r5u9meGj&|WTg;S>RpJnrld)bO3k%3(tg?5kjbBs)dW8dpH*kV z0;xc2NrRQy1~+YW701zN6?5vZiQubbg>E{qdO2suN~?r|TXP4w(qt8rvewm%(Uh#R z{A@z^u>()d?BiIzT04wAZ!0>9TJ9A{58Z&Tl6P6+nW)fJL0~6YvVJ)$xdSgb%_=65 zt*vTZri{BLCqrRLS$`QO0fwd4cf*c=Cu)5a2LSWF{!UaR!`A;ZgAZY~o*Y3VYW)T* zVM<-7)}JR?%36Ohj66QR_5YA|l(YUXSdj5?)rPAe4c%*LO9mb3=x4xU6&=U;q05X$ za=8?`@>OLO#(rO*we&g5U08;}ErxtbpSOyLsQJmM237i^734Zn3QU#0tdYvlAy8iW zXN`sD!#6K|%MvSDJs$y;(zi8I6S@iDPyYC|ZWScb-0=MN@U zs8ZJ_oppqsfE_5!(%9BeW&~Ka#=1kr(7)1vuka+axjl4m7O)bX*Vl561FXy!p!6JT z!JY*aUumV!qfA>bRCW{QIEfJsK&RU9%>RPhQ1~rCD(;4;D%g+T=?0$Jjap@X?>V%Z z{|qdPTbAiwh71XUmAU!5@vMVjWm%al<*15RL0FzsUX=AYWR^3eTwd({1S*R5-UWG= zm)KV#2Sv)W9-b{y;XbX4jDdvmO8ZXaYK{DtwF{l>L?sRr|@hvfHq}SJeA20u^O{1K|~` z{UliBGu{xcD05Fkjq>3MRZ*UGfMk?<_;%Dr#^v_oF^6C1f-Us9bQm`yh*z!NXfHrVX~Y z6~<}7xNyt$Y;?0=qJ*V#y)~F-3nm2#)USZuSa3wloRe2jSid3+{QctMIKE(E{kt*b z1(#^t3KZ6V0=+KyfXVj?>wnG0E;IRgh4oLd+sh4}TUdV?Y5JhXb5)^Nhe0m5Lhw=y z;ywq1_{Tz6jc~R51_!~wc6gD;9WY`W7+!dB0S`2)RpuX{u;H5UqbQdDdn_8x!hDze zERW|q3k$`$M%J?!Qg>vPdxTjG zrK4Io7>Go(8B%SMaDJp!!v6@3zkzo8B3s-qvF)E=UPiX&lLWW~(}z{0tL#MhAl=@x zNQs&Tc?Ds#+o)6?!e0I#o3Ve@8c^LU+{(LU*NC2ZgNCj%$N=2gX{p zT>5E(2so7dXF*N4s@NsPnyQk3=2;Xbx~jBPj;p+-c|ghp$@Mm24p)_X?WkJlU4q57 zszQ)bO>d?2P>CK+LZkTyKwM#Dr%UR*1z>HYPuQ(F64@mjalP+ibdi&Vjk#J7dqfZc zv_paB_k)?G)op<)ZsETIQCDxu*#Hvs!Ao_AjM!0`kD;OJ&Gx_1-I8xZ2`Z}#E$b9i z3b6$uY(a&nZ>cP5Bx5Z#ufmWpaXE@CIRg`}vbxB!uAQw7B(1i|Vr{Bz%`;e?S$-Vl zm$p{Vx3hjeTeHe8W_Zx_TW#mDMy0B`gG4Q|?OT!A`Va=H7lK9aw=$~2SOfmeO3@Qw z$gJokSZ#gLn^4h?{tPKj^kJmlw z=h7t+cbHjz5WA!*Lv{*YDHye+x{MjFvJV3A|Lmf9E|9h)EW&9{aE0Z50NNY+7(@_U zr5ynkdI=;1S8L1(-H&dA>#Q<1;)a^Bm;kFHmb>zPnAzY4D=2~TKr3dX5 zE?MpV24%gAkh5fsKD+mRfgYDMXE4K2Hck6q_(;XJRsJ<$c#TUoAn1j9QZ$MX7xI+N zNy=zWs_0U5;Vx-)83*zhoLJJ9e=)`GZD)U*-Gg{`ye6p4k}ZN@Gd*dsQnyQ4cyXAA zCA+Gs!mQM~6v&>;Z=!(XJ+v4|Oc1{ctbzXJI!jC4Z?M)Xthr0e%xd^1x>{O3j~R}) z4iju?g&;0w2>ZyNw2`xPfy>aP$A*@Mr2w+-fJ5&tJc3`F^p~dvMP6s<;as|)y87c>}YQ@UCV*i)b%b{tmnEYkSMN?oCu}Cj# zloQ`(F`dhr#E@)I`P1mU_JkAMtJx8)#R;|Z^s(!N4@jM~P_6O@A@zpZa+f;mt%By& zR)_^ejJ581U)BRgyDCxyxdfxWz>lD-TWz)JF3e8V zc!iru3sM)#dkbjhZm_q$D3A>!<#z)3&aS{$4!@AF5FkH{F01Q@-9aE;AtYMA&v2&} zdR0FnL_2aDqkhzT8x-VvJe05BFT)O~6Yg`D=Vd+4>K9>(EuW_?MC}yBv%E5ou`Ad0 z?m(603yLYLK>66vv|1i6dIojQ6hK$x(E?|@7-Y_ zwX$-5O;!9JO5}IgX+BFeH{`jWMKKvbgD28aqPh+FI=)lhKQ^rzf+oK6OG+SEgc=yl zM=|Jz0y$+3cz$?(4Ml@aPta-z4n_( zEgwtFsNk+5x;H#sg6MabTPW#zm(Y&w$<;&o5we4^l;is_$oD&}pXUVo?fEG0okr_9 zoc}jWQzW~={r+Ai)AbCF73lfD5hD#A2uz}c<2|(uNJ5Yd+*k>YI%lCm8G|9gvx-Sj z2^(e?=lXBPQ++QKGwO0L5&VESzSx)q zf|uLxW>ekd%h5 zBlZhyavN8St4xz$CL6Ez4q^T{-frexBROs{1SrX)b}kkg?=u|K zr%Ho(R^E{;AfFbtU<3L{9vQ+??S)RT$H#bc$+yAbl1wnEgd!-(K-(o`RS9V>Az2-~ zq!qlQ;6@PZa6EVUE=SF>B695OvI{9YM3uZ>?@pcs--F-N&&RlSJ|GuKuyKp9f7b2f z+Ngp{Eq8Ok3GT9d4;{imZa!ERqT3ui+tPk>NEG`VtC(3dsefRFdQi0?c)sP*mWB#owSpH|dQ%X} z!YG3mT171Agg#F#yvQn~NzYYVXouft`Syc=&}}FXe7{vrCq;$2IOt2Pd0c>;&{Ggf z@KP(2zLFbyj!d}BD!2mG0->cy3w}tCt1z?&G6`O(vC`0oGJt(lW0j#}oDLt;SXho5 zg4bF(SEH5c(9;lG@Fq*RUlS_CID)rntTyx@Te(|f4WWO)q6P2MSX1auD$)-vk4|ZG z=%MAn9=2rDvpw{GD3c#qBCWpAN9o!;YRMjGPiP*LBlt6`ga-WF(B)Wcg8yUbn+>6j z%zH}H`B>;F_WrcSo(RRs&R=Qlnb7B9)q=m)*t09|Aaj3X1!akNA#@Ta-LpFL)evJ< z!QX1^_0VCua=+8qKSNU-#P2osW@Hx!|C}aNS&`r50{x@TthOSra;E*!3ek|%SdmXt zJN{@bAzEui#{Gh>B-&s_TEak|*L9n$@IYce(MskvTagQB2%fhV65U`$t|0j@=)$d5 z^(f-c-)MHX-#zF;k4;jLEWVN7G74Me-GNDaw&$qIfP!rX4jeU9L(Rxw>U*B7a! zmHMky`eo#n`l_^C9PJjulxr<19oJHJkR$P)0-`{BaC$gm-GQ@6UmKEgF#u*BJd+S`WvW2j@s~RsIlqb=8O+P zi=*=}^Hj7AJW|omNe4}6!WaFebZ`kOJJH|L*hNQS8#1ER=sq+0B8t1w3a}(A`T=yG z9laJK%Z|3f%gTvf;Xt_2&%*V{jV{1g^P=TwANM~&kQZIu05>W60Qw3<&qCc`v;}?5 zi>^SM1<`vjLkpw#qI^;GFrJH}H=y5==nWV^Y4qbrDT@}Nm-6UEpu8el0BS3v-$7rY zXfs$aKRSWB3!=d=)F9dxL4YOtS+o#|J^-OrMehVX)zJ`mzesIx>{)iak?{kvuvF~o(qz!=yVN4d%?#u8XlxPQ7qoU`75tiDpYgQU7cW3aHP4qOhtfJpREXs=B0UCYLj4+$=J2d$L z-bfj8nkLR=sW$@2Hk~gymENXYAQwnZ*t?L$E|kbcwO0V4H(iu}&nD=< z_Zb#@w;&B39mb~j2-5654dyjnEJ&-jfmFX&kgeWI_VeN54Nb5+9*sfMN6Kgm`n*da znx?CYYTI#%cbSWC=QNeE5j@Jj0`|vQH5uStLGL}_`zpf&mB~QqssnZha`N2OC0V>P zgUg%y)audzTE!=GG=P(sGJ8LAGRNUgteNK(LE4#{P<2hg{LdoY?_9y$HVAM{k@o^r zF7p_lix)f~xnIQhyOw|tPP3c;Dv+`Wq}rS%TjH`;pbpL1vS(14S>SMUj{PtS<+;rf zU$_x8S3p^ttLE{7J+3l>9nIB+yh885oolY~oxw6+3nO`H;pI~1-aH`7WFd6CrO?Xe z6LQ(F>zxQ*G}lTFoWb1Y2H%HfduUAWVTJBN*Iub>!_{kE<9lkhLUVeBwWh+q!Qkd~ z(u3={n6%C7i!KCJx!#r7O*C&11Rh^*bDxugDeRp|l6GbDS$T&^?8)=EfpWYPIHui# zAV|}N{0bB@0RXV)6lWtF_z3i<`Bc-usW6Pqr{!Fa!f^I-o448HC{q>!_nUWQPa?VO z`T(ByWN;j1XG4XWPtRbxWM-@H18nij979`xRH#z+0ZzNk1HLaY^JWfXuuyKbmdA#N zRP&JLG{-dJ`wh#CP`;zO0dEcaKFdhsSQe1|;$6DxT{etVVRJaMZ6#>2Df>mvn^cf1 zVUwEc9E!g$zm_h48QmoXw50iUcxR5^!s1(b!ZlN4QReN;F)-94^HQrSqcU^7S z-yyzQ%*q={BKr=ko$sDS5*MI>wF@LBpgdlqTN}>doW~vSf1r!PwN>sHS?&!qw02SO z<1&=*Lu6|g>wUQQc@$e)8~hq8d9SgBdT9a7+Ka{u*EYI8Knvx`ezkT*0XxO&ehCQD zc71(T#y^l2Rgi{?-axY+9SqWL{}j)5^tTu_;%6TQ_uTcX-OwsDHIY#3P57*QBB|Cl zmqw6`4N)HKg5P186M32RTxb1y_b4!l60MIKNt}qb*0<>WszfW+ZVT5 z94`n94(@*#BQM;5U^vn|UWVS#CnsJI1!nDrT_!wp*D@d{3zCafp0mPk5`U}KHh+j2OMeH3~-Af1*Y<$px6N;wE=IXg742Ghdh z>3GXI?xSe6+B?Q#=L)jO`vnHta-JZIy;GTUz937~MpF7L{^#%u(j#SlheYICP`cKZ z8(p^U{SfNVa((5wS2n#Ow7YvZw9un<>msm zT;p*Y+wz$*VWIabTl=injMkbYKHBoRTn?`peg6r?8y+c8>P%m_<(Dpd6g6piT&`o{ zzz0XpEl)@Qq1yX#F#8=kVKs*r;I^LN@&=`MFA`g83z{Jr z1aZ+;Yn>pD+H@=WQf;}e->HF)<$nd;1vZVjyk_iu05f6JxSSm03L`Xn(}ai(Mv2#v zn>U@~Hmyau+rWlR=Z5&KywAZ3Z#qx7-QXPoYd4)QNRzT3N279KnZ){3fR~taolWm^ zCs4Dt1d6}u{UtJ+5d#OUn=UcSQNsYJM2w()hs&$Q-YY2DzSGkN{Y13V-X~it$79T) zeU~}A9>AK^ZYHl6#jdJ-k64aE?{dhh{Zt8Mw0cj0(d}mx@}_ZzcNx~i_I|N8ecnx& zF6~3o+8*yq5NZ2af}G~P1yQu`mj=%CFg;ZJgyam#p>+GC5I$1B8iug_Y&}1$1!MIO zVI1w}7<~Si_XgPAexcNy@*X6)7m2NzuDuA2wqG3NEOgHG-p_X4E5_yK^3iG4etF@2 z?Mi*I_PbEW_Kz(1G!XZv9;MR$(J~6}g~knR?mF+M$O>DHKZjDc-{|r7e1p~442#qL zDRJ|fte)xVBdY!8qUTVu*=qbLS@`8#hPyXdjl2!te!GO8&$Su@(7N{9^B8`)*lPSP zMBRRSA+gJ?#`lt^w^tIo+G^xI`Sv@c-t|`Fr^wZ>2zIm8$V>C>cNX)`{1>f8-kEQ| zOIERGt;Uz3X6<*$<PewTz8{$w@&iIja+>b+_;zCuoZ zwTvZSw;I0(?Qj2TgxEi=#vaU=_OI3wd(&#%76x{=)Kk93cfkm@-!1hVU!$KqyIbnH zzQ(J`^}D5BuCFndYI2X%3-}t7Fvacn$j>4ReT}@Y-2OGWu3YMCe2n$(EBYb&1NIHp zdnE8O<=|_4mXtjsCpbrajT4l^uiQzL{FJY8F=_d=U^n|3ui@k2e2qWF>el{y ziRORN*SMK_^rA%l|LKEK;RM=n>%x>#=_t$i8sT5m*jyo*Xy+0TTwrB1N!kc>)TS);ep5^lARiW=&gYGp3e$oqk%fAZvp4q^u5 zuAxK`3-#~59@HbO4BdxW<2|gY4u`(LijQclCRC4E>itM#4WV7+%#StJ9O{C)ct6ot zYv?NS{UAx@afuG4glkFl+?pDje{N2StEsz=ku z%*mGD`5x-p+`n!@K_La#xoyn$K>K3%ETqZqseOq);r8aiDzw)K;;O*6FyK7<=7JhhLf6PJ#-?NR zYzntk#RZ}SOtFt5>))xYd~7Yj)0_@dHKH<@*B64TXl3Gt41nJTD|ES)sd9xXqYBS` zOF)$6T1-bdbfU|hnktv0GEQWUg5lxkluPk-Ckm)j|3dO}a<5@BJ|xh(o}`{OrK~*hn@LF@ z{-2I%gDtaC*Pz!kK8Yu*$oCr%eF4&rqzVA4ccVaT7#0`>)R}9Ugiq`OlcLALB;l78 z@I9Ft2PCe?aT^|P#ed;NfT`rgckyr^{^KLO$if3%L4`IJB42pX09<(SI39k1|H2Cv zfrZt^S*W@SmcyOEjh>vGE~I2EMhXm6v9i5&IqP%QN~&w> zg3npVap!Wfi>xJOY%0eu6?0b!$SbgNa&#$XVhc6bTr>L1FR*O<++waoKqp*crKJT) z6b@V#V{`>YY6%!rh;8O9T^o^5RB~KL#po!Fx{^Ghrj&r)mZj4HW13!?`4t6degm4V z6mtBU9RJ!J4kBbK1J$j~H`Qko7NjSjE}IOer#1U=%9EbJLP(1sjl4%gL3xi#Rw_WbyIr;YgOua@q`|#)ww>!hJ6zDU-V_)fz}YfmvvIPD-_g1W^n2 ziBfgxs)97!WJxb&2u1R8B+trbF1aC{)o7TkZcJ~13|b))!~=fYJ;y0SK@+uj4SHBr zLajPpYOB*L;A|uv6>6Jh4xs6^AjEw~?RAdTlEaxX$Ak4XprA4X8!`vIy)!o|xuB&b zy`#C&ZsdH?ldtu-`iB2)T3nz^s{^^QiCUSOELi2J^16UwSBL2=ia42C{u_ zFs8SYOj)3!*YFLshRlfoFVH%!FDx|aijUrXrC3nwAs=07NmtA})U6McB z_-PLK1`jtz@9^zm#P0mG~dWe@pEo*oXg) zn!4-U8}X3#S&Qe>@E`pU4B)?`l0UL<cqdHdv)%vp|16}Flc`UNtM7!Ve8N;aSEMC| zpp3TqCkA6#|HjgaR{_!mz<+D`$mDo@`RKmM#PYGxiJ8O8rza=JlFP^X2a?N^`{Q`5 zUyfJc;bnNS@yVf?v3PR%nz}K(1Fw#61yuFR`xApB%MUlNUOqZ8I5smBU*4Y_M{)|A z>7N>9Qr*7zL_9Id8mX-Ro+?zNm68ThiT|y$<@}-9T&o9%l9Oqu9#nF0BtC?fE`aVB z>8>B-;LTh7>PIMSyeO}3Y;1KCFo-V=1J|Y|lcR@Y(?_P_Nu8Z~^ec5BIW;;lHaWO| zHXjv;55=culThwIiXko0KOG+%9Uq-eFE~9q9-qY_IKe zlhgf)>DT~SW*Qku#QTS0qZ7lEy6za|rt^~H$1&CLS?3+84~}R8QVfet&$3}Eo=8qk^pA~BA3+(2DKRjeh*M0I z>!D{k}qf z7Hy$?9LsNIfq}on~|G&}gv-3gxkl)wf zx7

_I{RFk{I6g3UyZd5|cAivE=mRR7`{eYc{bjEMI(^Xe>5^H+=T&h;8ob?u>13 z+tRsHQ5{jEe>yfg9UoT*$756d`{FdU)3dfPIWsUg)}Ktq_!h)iY_NZ9ES7}e$Ko;0 zJ%uS3LlNj>ES^YAOp1;q6>Wj0U}l245FZMY3fLX7iz)#F8iOT=ddi%q+z-O8s;?Wcx)y)5}TRO?ZMKh zp|Kc99-SNlbIghhE4gw-Y+6{OD~M4-3*9?*rKoG`>FpuMajBd0SizWr1(OMiazbR8 zRPn;^zYL%I0138S+#XXU)Q$I9kFd~dt&X~z3nH)Hnr`9V(f>A_w^5w9cp@V8m8so zxUMQ~g3-HoboF&^YD0~_&TZS%mPAc1O6=Uat#ey!`?ij4ZQHkZc7TwH$>dl(J~gX^ z9bG&6_L6}EhcMKsQOG7X5kEYwM*0&N<^hZ~$>lMI#Syxbh~t;?7$$~ITrUX^ zQDc)>eGbJ(_l;25r}~G6DA{SfDkY~AGlSDwmNE1bpN>sV#D-zN$yrQ{u~DeWj-8z+ z#X3*!?CFbb-_eP2^~E-I^-!>F(Ou7u(#{ z-A#e2DX6%x9nI0;CzYP{;Alb(j`tsi`j7^4a0V*@-Z9OouXgwDII*i|%g)X|t>c)j zqE2%YgDio^0uGL9wbqi0aezhv6hh81E?!BsZCh;T?zZia#!j(DF>N_y!qWjzBak%) z58Z?f98%g$4fexn#7w|k9+VlS4EsRj1cx<5ISR)QVGSDszI$8SjuT_sx_U4Z52jRT z0Pm27(BU&36rTpuYA80;Ki#heCk_rK4?%BY?rz%>>*%E0I}l-8)bsAUi8cX#!4LU3o($ZGW% zoxo~NhN|Jw1k{LA{$QNricQhpv*B2hFWQC#Fuiy}n3$QE;B45rwHH)%_4Iahs(~5S z7VkjXpBy+VJ~&M+IU7!~NDmsH>QygWA|hCX=-w8Otp1%?1;7ZZrk407wc}@+qWrOrmWCUD~Bc~59!DLgUnsY4C+wbFnBNx1cqp;KQSI% ziRUQ@5y~GQs>65&_ty*`?Kjf__Y08mvtf> zxbaD}JDkL8(WmPU4Z@@XL#r$gQ-}_xXV^2Fm>M0#19G`Iie~8a{^SvmnwXrJoJrQr zOdP@(>SV)`)cI#&**Pv@C=O3KUN~p~T1lF-snTU{9c5Y;$5}9Hxu=QJCv=J51Zry8|8(oeg+#@Fw)O0sBjim5ali z7eI<*+j@I?`+9r2+Cdn+grp(vFt-G;frF%SQ}3>x_D)5oA+>t!#2l7YnC>7APEu{} z>fn@(^=;|uP=_(aHPL2AWZW8B6>YKToTaMlM2!^dQ7yGmSNpJR(hPlBt zeCUaxJ6W}o+8u_eppOHI55-{P)l3qed1@(x-7zgAlMlPTW_ z%Oz*O_WR%l55&ge!!Y|v{xXBpa!~iXPxw2;je${IHIQmWlMc#Y?Zq>kJ_7Q^v7*}+ zKM2PQp6K`yy?Df8;~1?l8eSVF@idq>>s)Bhf*wBR#X)*vG4?tqcQ`c?Vi@Eu<52(p zcpR!Y3cl%Nq0{VJu}feiM;v^}l3q4lnw|8oheyZY{|l?RqS5mk92p(Mf{lTv98K*R z#PF&&Y?GSxc3~_I5BSJzqdU9XHpO=J?C5OoZtL2{$r;;()t?hcR$tg(3~|m8rc#Lu z%!kdr-QBV6T|ID&PTJMA1Kx0qrU^?axH}D+@V6=s%I1s9_B3T;_7bW2Dt;m~B7q_F z$Dr&(W03W%=x1e)&csmlZQZ_;P8v(5gv3Qm=0i{V4vD@PmUjlA6m2rsTsR~{_}d!X zi(rePd5D&~dN%jY?ir4^7O|bZoBI&%0Oc?&^a-KtDe+J+#zB&hT*^Dv%%wX$+&?om zo$~i(C%28;5zLVZY{lTr!POb>KMNWF=TV3C$aPM>$wP=x$~GqkmWpB?L_~-KJ$V}@ zW=CfX4ir2UY*cn)9?^utxinq{rnz=3;DMNFgsnrY5y!Xv+Fz3$2OL8P7*o->;F6`) zT*6$i=dl??F7{~?jOm5_BO^<(eGq6WQ>Bawx8HM`p6EX`Yvqh~!+V?-4VQV3DGj@x z;-=ZcLRGQ4&x*siiHfnO*yuQ|McSey0;dEFDbA#6 zIu(f%M|*N+PoB0D6UQ&bn#sv=aUkjJ#s=V*8() zcN-Q>_>8L>vH6E~LT$%sP|QpgGXWOPkTEMDgMPhLneHDQ!{*|k>|sn6a>%63OK z^x^}c0oY8jX9_eXFll9IdeOtC4o;oy_z+THqhc%#;o`kB?t(p>l8rX)qs+W%H7O>M z(Oz@`5hP04!(SiSMZ<68#H_Y@{uuIlE@Tq;YX|YY*4?!()mOw{SoCSE% z;N+YY8-nYH$Po8-D=HzL}95sgdC#|@o_kfD6>C4GsV)3 zz=v#a6gB>fp-e@|>nXHVyju67Kd ztFH^ny+eufgO~cEL4W*$?nc^jEThvt^2Fry=yf_ZQHxMI(No8_jI<)%uL1x;_wIH3a~*vNz4|1B8kQ2FyoL(m_DsOvq3N|4lG?} zcAAI_WiR$~YIG_N-xThI-q6p5N%WWz+RzJ3^2m5>cG_aLqXE5JGJb?s2fg(kVn|a5 zq~LMt09*p*9ETE9*m}W9AHWI>MKSFza9$B`*Aa&udPc@0yHVpKx{I&57pGZF`O0I@4$g&xI$P>R>7l4ZBgL= z$bK<=T+9|hUl?5w$97`~1;@dY#?>nzh5wqd@_5QN_4fA7&C%o`M#8x7f^9V}cIUQD z@QBRJ)NZnI%#yLm;bHCj>gW#w%h(uDBE}7u5UD5=gD`1(BYGl?y`>o1*B9$)V_cYK zQ|mky4>)izaTH0)AH%{kgqUz#HXG)sQAZa>;H#!0a5AA%iiM4rID$AKrAua(64`EX zE&FfFuxv5JL)qEh)}y1TvO_@JnX47fJ!2_J>Jt%6c(|9xspgzsj_A1k=mg^Ipv8oh z#Js?plYKbN-^>KgL$Ny>lOQS1lCFJ1B`Zm zimT8bu^0T}ib_+jx0cYbly@ygLe3BHVk2y65}Y0k?~x1oBtkD=dS2p9MA)26APkC` zN)6Vh6Vx{7HU@!l^E?5~Vz;w@6agWm=&h`XKtisvZZb%VM(H3*sFW*U3?X;8+FW_i z;uuyOnsptgPerI^XTMl7nJ(n~$sId;u|8shjD2$3&J!UM903eX?jxC4>*L(_8B6}Z zt(ED)WiD5#-NBB|?oRB%JJi(hWQ+rfDROMiBn)EwbZ4~MYGX^n4jzOdrw+)vIXW?d zWm^I@YIDbS81c>6uy60%v2)gA+17iq#1~*l^&SDc2}o>q+!E1L!-#IpZW+a($QeTN zND|CL1%&Pf5T}|*g$nS-TM3J&X?$v36@@o_!4hc=MUR82bq&iK^%YV0;aMZdp)xjt zoh`!_a%hA}Kx2xa0CYfa!1ThD3MuOa10j(CF4;Jik_{x|58ATIE>j zx3=|kz>_;A%|A~?Am+B;+GxXE9=F8H7>&uGMqoafAea(=HO*rd_XkJAGg!0vtm8Wz zNNnE>{7&QHK{;gKndXaQ*SWK=tNp~iF&b5bJ`oeuo>rqiI|Wxv#5=X0GUq4aC(4Qd zBLhWEIZ7s`m2%*A^`w*o(mzOVT-KBQdety~ChAJWgyWY$*RGznZJjGt;~WLIQDOry zGUIb`mE)bDIW}NpM2|yjDlE&?KAL;9oxVS1&_@p3rs%^!^A$}wPAzE85MzGlRhYR& zm9t$!m@$k&AH>i`!Gq(zQ4GZ32-abovi(OZ|Nk!3;1UjG$c-U}? z!Xz=!MCrlw$7qida1_m%nie2xiVLha781*XzYi0_t#9gSgZOkW#S!mM?2`@7As8lo!i+d8)`0_D2k3O0bpRnH?nI{c zCFGnCJ9yEvv>iP3gqwI-yN0nfLHI}?;B@!yrtZwDq}g|3BPOvkSPZj*OiU)mVO$v= z4c z5`(&sDYp*B6O+p&;B0DlNDeW&E6&8s6yh@oq+q>9$Z>n`&YfM15vSa!o*f)M4`%y1 zdrWjObrtA_gP&9&6|H5LkSTL(=vo%E^wII%Um8!S@P!$~>$ zES(DpCZ2h_F zaF-2zG0~W9T|3)x)Hoa5lrv2ja|Eun^9RnFzl1JiR0b1ZChstwzr+w4&l6s!qc1ALp=Pz%0mkU z*`yppW58iv=k6h-hDsBMPVh1nx@1!abwlEnNwP!-#6yQq4iaWVlQ`C7Oo->``i#WP z(qZg!CgqTe21PdXn(=0Giy_gWAh0<#Q_=EfTwaK^Z)-Exd`7T5h`jagNlgr6wJ-`P z!PU6huMN6(-6b|;w1;t+`0y|f#o(H~W4dC+;4I)^(nB<|kyYj@#xTMmve$$Nc$y1u zL&%Dq(z&BI)u05LhGRUu5v!oLS>}iYHzwdnaruNWL;$h$h$(b3rd<>BW1IJ z4L;0lN(OpS17;i=sfMWISU;k0qLAskLn?%sf(piA07Q?%%hu&mHsv@22$`FRi`kgU zMJJisFlk0H!5}^JV#yJ+lE`ri?oa4LcHZZR!KvqpD0i?@cQMRq4uiO9zA7dr&QGv^ zVzA4^ZF!qz)~h$`9A>e&xzh*a@RE}P^Q*ZbHm1**>1}8iLeVRr!vr!?-b^YUnVgCb z^5&BXQFE`FW_)A~*9J;oEWuy=hE7gn=M;lZcAd1VGuG7s6Eypmz#CVsWeklWG)_${ z)6_U_8Iua$Cqs@BHsHwvI5&Z~zAU?F&-e-xNR}`XTrOTjLTpZsmqdriX*!wsKRuEj zqY(3~qmgr)N|6Irqfu5E>^~AiV^}k3#l?t>q#F_5hvA(ntyByp$~Jy5wQ!TX)VBDz z9hg1?7B^jol1A~TWU<4OiF>?Ci&Ze!t9a&M%(4g&YRns3T|B)?6z=crKzvUQ)i{G^;uAQ#Mq{&A$kI=AaA+j1uXs(`wvq4j(-jXE;bKFJ zuzVsgA?H-OOKb`BeGuLyp|b^zrcI5FB?nA&Kpjk3Na{Kd)|KA$CqR>2$idbHCt)<> zGJ|;24n6X+6x_oR=zHo+2nwK8nn$5=p5Q?R#->Nj$rmz>!BvC$JXLR}r^bh3BQv~U ziGz$-Y#;2@+#Su?um;y4Y^v$no6`W;W{JwnwU_R$ZC!n_m0LE+%E;NFPu3&?WdiCv z3x`7SDg)MAS*j3sORZC|+T6y^#fef*Lz=sib`Fsi6(FzKqrRWbXnad`PSFmIrVIv}!ZnS}sE@%oxY4l}^ zvCFB_01*l9mybI~;>sl(pWRz~ zaTL6>v%R;cgKZ>XtRynEKYeriAO5tQ0&%9uISiw0a)du?Daq;ySY*a@#Zo&G zTsP3S!eEFn)i|M2_wuMYXm%1(*VkDw7j;Bg0um`Bt>Ya=nO4x17dx0L3tK(Qj)SS` zg2CaYBu)TytPN2@{)9mLa|bl@rDv`tI50etJU$SN5Vbj?!*YUSD6$au7O6DGB0_l> z`@zLjeMw{X#+V#v{MYNZvsBI)sfjSf&xLd`-E2ycIJ0Ya3F_39KhKnX2y(>k~mF>*Yo> zV6cAzH~n~XTRQ;M87P&ponRd=LK(p%W>4vc(|yxH?YWx%aq@*TZnz`~3VT_uIa#n z)<0n`PS&kn`pzqq_%%iV|BvBgDeGJ}*Ksbvud>2OOMUobwl>dwuWwVHf6IGp-x=Tk z9!lZY)}{dS7p2PdD?PDvvb0zI#E4*GI?PJTE zBjyrpyhUPi4wcr=eFy%&ciR-{y0Bm?mnbBKa&LgV@Rww@%{QUcQ5F&-fIcVz zIl7Vl4CG&L zV?F$cOkk~nYYp6N;7$Y2G;rL&a}2!Fz#9yFz`$P`_>zHd7|2%zvEP7!{DCv^Wd^P> zu*1NU42&7b7qGGX5d+_E;OhqF;RmeDUu@t;1G^18VBq-%e%io04E(l%j~MtH1OH;+ zTL$Lf*RbrT%)liEt}?LQz>^FdH}D(-FE#LE27boCI}NimVrMq z@M!~IGVospx>(@ZPKkkw4P0elhk<-qCd&;Nc)-954ZPC88x8!Df!{LlM+UxV;6Dw_ zgk!>Xiw(r9U<7Y6u-(8N2KE~`W#9z{USS~rfC1b4qJey!JMo7NeA2)d4E%?I8E`>Z zuE@Y@16LZj$w2<45|%sDz)1toH}Hc7UT@&727bf9hYWneK>kfow#V1365=gJ0t*eS zGH``~Z3b>PFlOL{f#(@`xq+WB@Cych-M|M8eB8i48u)huLk2E0aE*Z- z2A*W#83yh*kT3OTJMS~_6$AfmAm8H5{F@ED-@t4*U`#JDu-d>z1Nmn_nLlmdGX}nB z;2Q?od~+Gf1q@tj;A#Wg4cu*D+`y!P7a4fez}pR!Kf8f;A2s+Z2EJ`z4qjZte#;D8 zY+#dtg9aWj@B#z*C%IXVe-MT6%LabU!21n+*ueiW@EHT2Gw>Ay|6w3~U$$3ZV3~n@ z?>^I84IDM_!v@}H;B5vzWZ>flK4;+H45aVP_O=?h&A>ed4jFjB!1E2f+`wB5e8j-V z4SdnSzZm#;1Nleq*xv#JYYkj$;AR6)H*nOz%M9e7qGA184g9WwKQZtb179@o4Fes# zgp&124Xie>!N912hYftMfgdsOsDZZ`_^^S$H1PKZzG`4LHt6iH#K39;8x7>2#bN%5 z2A*o*egn@jkbk(H4u*JX~2F45=Gw_Ik z?=$c!1CJVbmx1>i_^5$T8~B2OZyK1jK+{ufV6}k_2DTX3ZD7BF69%4Z;0Fx6(ZIV6 ze89l}G4NRf|7PI73_NC_KdkA=F)(OgiGd*ls|{>4aHE0U2JSWRJOeK`@Z$#FV&L5d zK49Sg82DQQ|6<@<2Ief(^pzV}W8i87I}F@m;F$(a7RBBJZn7`V#7O$Kf^@N@&uGVqXrd{sO9y~@C&2Hs}i{RTd2;4=ok zXy6+LI#s%zpn>xZNrh$Pax*vJzE$Cfl@HGZ@7bGc)5Ys8u%px?=|p21OIB^ zF$4c^V|M~nRTTzs{JMe`DC%fZD4LB6@o>S^a2LcS6;oUi8vzjrlT>i61kuvUB_T!A zAv2d0T*y(}lH4s*(@ae=9T&>9QOVTI?ECKd-{!eAb!HB~^WAgqIp^MYABfy{u2%yy zZWu;k0;XUZ&cJNchq3AT{SuGi1uVf*4Nbf1SPz?`K9gDd8H9;A7N=q+F2*&u4fRQ7 z+D|dwz%q@@b|0*bff#~au|LM)XiUdhxCnD`Gw#Fh@I01a=>X<~{uqQkFbb1!0#3(l zT#g%XHy*?DSc0XWWqkCwn;b=$Ko59fzxp|evB({HLl0a zScrS^dpv^|@iLYUGV}7pN>~T&MZo3!1rj&I_Sh3saWc-rh4?9Mz@2y)f51z46U#O> z^Yg)47=U5;A`Za}oP{4^9&W;~@C2U6YgoRC8NVtv!WI~cy)gk(aWc-wW%wBu;@5Z{ zui;<#Oj9$Drq~rDF&f8W78c-cJc4KN3f@MaW@a2eY>3UVI}X4&9EE9^g&$!aZpOX% zEuO_+@eXi1l6aJ26pEKiBL4ORy5bS|{@Fh&ZF_?j~aS^V>jkpW1;2-GG!px@{x-bO0 zU?e8uIGlqyn2THS02bk8yp82sn(?cmKeof(*dGUDEGA+y%2F8i_vMM0j@h^vSK}7k zk0DLQ=u|9@jAB@Iid=uZrY+Q=@xE&ARNxX<9Xg$w-&=>1t3k=7;7>&s| z4d>z#T!-876#k4iv0MnRAJ)MjY=hl#AjV@VX5jmngL$|G_v3NAfF)R}wV97T+fo0W z;D-U&3d1oHV{s%-!Yo{dxtNbT@DN_ad+621%)=M!V=#8aUKoXmI2O}!7B0eE+=Bb@ z1Qz2BEYsG^#|LX;AckO9?2qv{64P)dF2Yr~3HRbLJcrlt9{RO2^9sOL7>>o1F!Kn(&e$8H zFdj!?8qUB4xE!}&5fkK-x4j91Y<4sZE;1Mw3m*z+xmp7=OA?d6o(?VSCdB9{M# zvbR5YK7!fa5?f;zd;ue{FAhNGybU29imzb`j>Fe64X5C2%))G3h#uwKj;p%4e^akF zd%hC4r=8`J5BJCic*K-Z#ssHiuUPA{@5*+?$OnyFqmnhymQ7s2_lHd+j2rIKU0kUn zh9}B{48~h7xk*oNq&0Oz<6=_d&27CdQ;v?2RXoPH*UJ5|?qRenxTzoXvHLdrJiNtT z@`D~_YL-hsUn2L+S}s|(Ce9_xiJEmH-Fvauq?A+ezmxs`kk)#=Y0~S!J(VJ;BWk$} z@xQgJFZFs&{#QHu`jd9@Ypk8Lzh0CT`}!6`Bzf{nhF36^Wd(R>Vk9*x7Dk ze{t%DN#s86J{k9LJu|Lucg7tfWoIAlpsu_Dy`6({tDELl)^?5M1l-dC$?0Q?#O~u} zuabK$*Ief*uB4mHS)J$*{1z@OLqEODP?CLDasw* zmbF3)B&Tkf#P0p2Nq@Sd_E%Z5)8AIJS-zTdPx`C#i1Sh))%W$c*1VqDpZwVSr@wtt z);TnmtjWKhTtiMEvDRrmicZytw;nz(+OCLpf}Q3{JNKk*G+mYKlr_$lb_29P(&N>1 zS+e_aOj|2+lx=z(`m@bBFWQ%LjY`qFD*frbtG-g!*G1b^maKg_?@1|Ig>nHs>h Ppxp`?_pa_ha_0UwO4~Hz literal 0 HcmV?d00001 diff --git a/tools/labs/skels/kernel_modules/7-list-proc/modules.order b/tools/labs/skels/kernel_modules/7-list-proc/modules.order new file mode 100644 index 00000000000000..b2eb38e84f5631 --- /dev/null +++ b/tools/labs/skels/kernel_modules/7-list-proc/modules.order @@ -0,0 +1 @@ +/home/igor/linux/tools/labs/skels/./kernel_modules/7-list-proc/list_proc.ko diff --git a/tools/labs/skels/kernel_modules/8-kdb/Kbuild b/tools/labs/skels/kernel_modules/8-kdb/Kbuild new file mode 100644 index 00000000000000..4453b28ab39c4d --- /dev/null +++ b/tools/labs/skels/kernel_modules/8-kdb/Kbuild @@ -0,0 +1,3 @@ +ccflags-y = -Wno-unused-function -Wno-unused-label -Wno-unused-variable + +obj-m = hello_kdb.o diff --git a/tools/labs/skels/kernel_modules/8-kdb/hello_kdb.c b/tools/labs/skels/kernel_modules/8-kdb/hello_kdb.c new file mode 100644 index 00000000000000..656a265d288927 --- /dev/null +++ b/tools/labs/skels/kernel_modules/8-kdb/hello_kdb.c @@ -0,0 +1,142 @@ +#include +#include +#include + +int kdb_write_address; +EXPORT_SYMBOL(kdb_write_address); + +noinline void dummy_func18(void) +{ + panic("Hello KDB has paniced!"); +} +noinline void dummy_func17(void) +{ + dummy_func18(); +} +noinline void dummy_func16(void) +{ + dummy_func17(); +} +noinline void dummy_func15(void) +{ + dummy_func16(); +} +noinline void dummy_func14(void) +{ + dummy_func15(); +} +noinline void dummy_func13(void) +{ + dummy_func14(); +} +noinline void dummy_func12(void) +{ + dummy_func13(); +} +noinline void dummy_func11(void) +{ + dummy_func12(); +} +noinline void dummy_func10(void) +{ + dummy_func11(); +} +noinline void dummy_func9(void) +{ + dummy_func10(); +} +noinline void dummy_func8(void) +{ + dummy_func9(); +} +noinline void dummy_func7(void) +{ + dummy_func8(); +} +noinline void dummy_func6(void) +{ + dummy_func7(); +} +noinline void dummy_func5(void) +{ + dummy_func6(); +} +noinline void dummy_func4(void) +{ + dummy_func5(); +} +noinline void dummy_func3(void) +{ + dummy_func4(); +} +noinline void dummy_func2(void) +{ + dummy_func3(); +} +noinline void dummy_func1(void) +{ + dummy_func2(); +} + +static int hello_proc_show(struct seq_file *m, void *v) { + seq_printf(m, "Hello proc!\n"); + return 0; +} + +static int hello_proc_open(struct inode *inode, struct file *file) { + return single_open(file, hello_proc_show, NULL); +} + +static int edit_write(struct file *file, const char *buffer, + size_t count, loff_t *data) +{ + kdb_write_address += 1; + return count; +} + +static int bug_write(struct file *file, const char *buffer, + size_t count, loff_t *data) +{ + dummy_func1(); + return count; +} + +static const struct proc_ops edit_proc_ops = { + .proc_open = hello_proc_open, + .proc_read = seq_read, + .proc_write = edit_write, + .proc_lseek = seq_lseek, + .proc_release = single_release, +}; + +static const struct proc_ops bug_proc_ops = { + .proc_open = hello_proc_open, + .proc_read = seq_read, + .proc_write = bug_write, + .proc_lseek = seq_lseek, + .proc_release = single_release, +}; + +static int __init hello_proc_init(void) { + struct proc_dir_entry *file; + file = proc_create("hello_kdb_bug", 0, NULL, &bug_proc_ops); + if (file == NULL) { + return -ENOMEM; + } + + file = proc_create("hello_kdb_break", 0, NULL, &edit_proc_ops); + if (file == NULL) { + remove_proc_entry("hello_kdb_bug", NULL); + return -ENOMEM; + } + return 0; +} + +static void __exit hello_proc_exit(void) { + remove_proc_entry("hello_kdb_bug", NULL); + remove_proc_entry("hello_kdb_break", NULL); +} + +MODULE_LICENSE("GPL"); +module_init(hello_proc_init); +module_exit(hello_proc_exit); diff --git a/tools/labs/skels/kernel_modules/8-kdb/hello_kdb.ko b/tools/labs/skels/kernel_modules/8-kdb/hello_kdb.ko new file mode 100644 index 0000000000000000000000000000000000000000..a0e973377bbcdbd53d95fe190d073570f28ed954 GIT binary patch literal 120504 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

lf{Bvvo^5S|5rBwB?G$~{yVVGf^3!77L9138y@ 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 literal 0 HcmV?d00001 diff --git a/tools/labs/skels/kernel_modules/8-kdb/hello_kdb.mod b/tools/labs/skels/kernel_modules/8-kdb/hello_kdb.mod new file mode 100644 index 00000000000000..c1d85ebd2e4641 --- /dev/null +++ b/tools/labs/skels/kernel_modules/8-kdb/hello_kdb.mod @@ -0,0 +1,2 @@ +/home/igor/linux/tools/labs/skels/./kernel_modules/8-kdb/hello_kdb.o + diff --git a/tools/labs/skels/kernel_modules/8-kdb/hello_kdb.mod.c b/tools/labs/skels/kernel_modules/8-kdb/hello_kdb.mod.c new file mode 100644 index 00000000000000..8309f67e10c7df --- /dev/null +++ b/tools/labs/skels/kernel_modules/8-kdb/hello_kdb.mod.c @@ -0,0 +1,27 @@ +#include +#define INCLUDE_VERMAGIC +#include +#include +#include + +BUILD_SALT; + +MODULE_INFO(vermagic, VERMAGIC_STRING); +MODULE_INFO(name, KBUILD_MODNAME); + +__visible struct module __this_module +__section(".gnu.linkonce.this_module") = { + .name = KBUILD_MODNAME, + .init = init_module, +#ifdef CONFIG_MODULE_UNLOAD + .exit = cleanup_module, +#endif + .arch = MODULE_ARCH_INIT, +}; + +#ifdef CONFIG_RETPOLINE +MODULE_INFO(retpoline, "Y"); +#endif + +MODULE_INFO(depends, ""); + diff --git a/tools/labs/skels/kernel_modules/8-kdb/hello_kdb.mod.o b/tools/labs/skels/kernel_modules/8-kdb/hello_kdb.mod.o new file mode 100644 index 0000000000000000000000000000000000000000..f41ad7a3b941390e1f5e1a5f1c525e587912448a GIT binary patch literal 30196 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 literal 0 HcmV?d00001 diff --git a/tools/labs/skels/kernel_modules/8-kdb/hello_kdb.o b/tools/labs/skels/kernel_modules/8-kdb/hello_kdb.o new file mode 100644 index 0000000000000000000000000000000000000000..56a56f171ef9b171c3cd52cf0f71fabef215b0f7 GIT binary patch literal 91576 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 z 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 literal 0 HcmV?d00001 diff --git a/tools/labs/skels/kernel_modules/8-kdb/modules.order b/tools/labs/skels/kernel_modules/8-kdb/modules.order new file mode 100644 index 00000000000000..fcd288c0d12ff6 --- /dev/null +++ b/tools/labs/skels/kernel_modules/8-kdb/modules.order @@ -0,0 +1 @@ +/home/igor/linux/tools/labs/skels/./kernel_modules/8-kdb/hello_kdb.ko diff --git a/tools/labs/skels/kernel_modules/9-dyndbg/Kbuild b/tools/labs/skels/kernel_modules/9-dyndbg/Kbuild new file mode 100644 index 00000000000000..a0d5f3af5202f1 --- /dev/null +++ b/tools/labs/skels/kernel_modules/9-dyndbg/Kbuild @@ -0,0 +1,3 @@ +EXTRA_CFLAGS = -Wall -g + +obj-m = dyndbg.o diff --git a/tools/labs/skels/kernel_modules/9-dyndbg/dyndbg.c b/tools/labs/skels/kernel_modules/9-dyndbg/dyndbg.c new file mode 100644 index 00000000000000..e9071e5a723535 --- /dev/null +++ b/tools/labs/skels/kernel_modules/9-dyndbg/dyndbg.c @@ -0,0 +1,32 @@ +#include +#include +#include + +MODULE_DESCRIPTION("Dyndbg kernel module"); +MODULE_AUTHOR("Dyndbg"); +MODULE_LICENSE("GPL"); + +void my_debug_func(void) +{ + pr_debug("Important dyndbg debug message1\n"); + pr_debug("Important dyndbg debug message2\n"); + pr_debug("Verbose dyndbg debug message\n"); +} +EXPORT_SYMBOL(my_debug_func); + + +static int dyndbg_init(void) +{ + printk(KERN_INFO "Hi dyndbg!\n" ); + my_debug_func(); + return 0; +} + +static void dyndbg_exit(void) +{ + printk(KERN_INFO "Bye dyndbg!\n" ); + my_debug_func(); +} + +module_init(dyndbg_init); +module_exit(dyndbg_exit); diff --git a/tools/labs/skels/kernel_modules/9-dyndbg/dyndbg.ko b/tools/labs/skels/kernel_modules/9-dyndbg/dyndbg.ko new file mode 100644 index 0000000000000000000000000000000000000000..d91d60a9fc82c8c21716fb60d7bf59200d7bc0d2 GIT binary patch literal 37820 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 +#define INCLUDE_VERMAGIC +#include +#include +#include + +BUILD_SALT; + +MODULE_INFO(vermagic, VERMAGIC_STRING); +MODULE_INFO(name, KBUILD_MODNAME); + +__visible struct module __this_module +__section(".gnu.linkonce.this_module") = { + .name = KBUILD_MODNAME, + .init = init_module, +#ifdef CONFIG_MODULE_UNLOAD + .exit = cleanup_module, +#endif + .arch = MODULE_ARCH_INIT, +}; + +#ifdef CONFIG_RETPOLINE +MODULE_INFO(retpoline, "Y"); +#endif + +MODULE_INFO(depends, ""); + diff --git a/tools/labs/skels/kernel_modules/9-dyndbg/dyndbg.mod.o b/tools/labs/skels/kernel_modules/9-dyndbg/dyndbg.mod.o new file mode 100644 index 0000000000000000000000000000000000000000..8ba96765170bc2d7e6ea18eeafc563d48f69f739 GIT binary patch literal 30168 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 literal 0 HcmV?d00001 diff --git a/tools/labs/skels/kernel_modules/9-dyndbg/dyndbg.o b/tools/labs/skels/kernel_modules/9-dyndbg/dyndbg.o new file mode 100644 index 0000000000000000000000000000000000000000..61db6e74995fa1cfdcb61d4bee2ebdbe32b9386d GIT binary patch literal 8892 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 YgU03+&p$fP`t`m6LpOUu$UO3Y01sF3q5uE@ literal 0 HcmV?d00001 diff --git a/tools/labs/skels/kernel_modules/9-dyndbg/modules.order b/tools/labs/skels/kernel_modules/9-dyndbg/modules.order new file mode 100644 index 00000000000000..61f36c5662e1c9 --- /dev/null +++ b/tools/labs/skels/kernel_modules/9-dyndbg/modules.order @@ -0,0 +1 @@ +/home/igor/linux/tools/labs/skels/./kernel_modules/9-dyndbg/dyndbg.ko