diff -Nupr src.old/arch/x86/crypto/aesni-intel_glue.c src/arch/x86/crypto/aesni-intel_glue.c --- src.old/arch/x86/crypto/aesni-intel_glue.c 2017-07-06 19:37:46.000000000 -0400 +++ src/arch/x86/crypto/aesni-intel_glue.c 2018-04-03 16:12:15.027813010 -0400 @@ -47,6 +47,49 @@ #define HAS_PCBC #endif +#include +#include "kpatch-macros.h" + +static const char *const module_state[] = { + [MODULE_STATE_LIVE] = "[MODULE_STATE_LIVE] Normal state", + [MODULE_STATE_COMING] = "[MODULE_STATE_COMING] Full formed, running module_init", + [MODULE_STATE_GOING] = "[MODULE_STATE_GOING] Going away", + [MODULE_STATE_UNFORMED] = "[MODULE_STATE_UNFORMED] Still setting it up", +}; + +static void callback_info(const char *callback, patch_object *obj) +{ + if (obj->mod) + pr_info("%s: %s -> %s\n", callback, obj->mod->name, + module_state[obj->mod->state]); + else + pr_info("%s: vmlinux\n", callback); +} + +static int pre_patch_callback(patch_object *obj) +{ + callback_info(__func__, obj); + return 0; +} +KPATCH_PRE_PATCH_CALLBACK(pre_patch_callback); + +static void post_patch_callback(patch_object *obj) +{ + callback_info(__func__, obj); +} +KPATCH_POST_PATCH_CALLBACK(post_patch_callback); + +static void pre_unpatch_callback(patch_object *obj) +{ + callback_info(__func__, obj); +} +KPATCH_PRE_UNPATCH_CALLBACK(pre_unpatch_callback); + +static void post_unpatch_callback(patch_object *obj) +{ + callback_info(__func__, obj); +} +KPATCH_POST_UNPATCH_CALLBACK(post_unpatch_callback); /* This data is stored at the end of the crypto_tfm struct. * It's a type of per "session" data storage location. @@ -976,6 +1019,7 @@ static int __driver_rfc4106_encrypt(stru return 0; } +#include static int __driver_rfc4106_decrypt(struct aead_request *req) { u8 one_entry_in_sg = 0; @@ -996,6 +1040,7 @@ static int __driver_rfc4106_decrypt(stru struct scatter_walk dst_sg_walk; unsigned int i; + nop(); /* kpatch */ if (unlikely((req->cryptlen < auth_tag_len) || (req->assoclen != 8 && req->assoclen != 12))) return -EINVAL; diff -Nupr src.old/drivers/input/misc/pcspkr.c src/drivers/input/misc/pcspkr.c --- src.old/drivers/input/misc/pcspkr.c 2017-07-06 19:37:46.000000000 -0400 +++ src/drivers/input/misc/pcspkr.c 2018-04-03 16:11:44.569813010 -0400 @@ -26,11 +26,57 @@ MODULE_DESCRIPTION("PC Speaker beeper dr MODULE_LICENSE("GPL"); MODULE_ALIAS("platform:pcspkr"); +#include +#include "kpatch-macros.h" + +static const char *const module_state[] = { + [MODULE_STATE_LIVE] = "[MODULE_STATE_LIVE] Normal state", + [MODULE_STATE_COMING] = "[MODULE_STATE_COMING] Full formed, running module_init", + [MODULE_STATE_GOING] = "[MODULE_STATE_GOING] Going away", + [MODULE_STATE_UNFORMED] = "[MODULE_STATE_UNFORMED] Still setting it up", +}; + +static void callback_info(const char *callback, patch_object *obj) +{ + if (obj->mod) + pr_info("%s: %s -> %s\n", callback, obj->mod->name, + module_state[obj->mod->state]); + else + pr_info("%s: vmlinux\n", callback); +} + +static int pre_patch_callback(patch_object *obj) +{ + callback_info(__func__, obj); + return 0; +} +KPATCH_PRE_PATCH_CALLBACK(pre_patch_callback); + +static void post_patch_callback(patch_object *obj) +{ + callback_info(__func__, obj); +} +KPATCH_POST_PATCH_CALLBACK(post_patch_callback); + +static void pre_unpatch_callback(patch_object *obj) +{ + callback_info(__func__, obj); +} +KPATCH_PRE_UNPATCH_CALLBACK(pre_unpatch_callback); + +static void post_unpatch_callback(patch_object *obj) +{ + callback_info(__func__, obj); +} +KPATCH_POST_UNPATCH_CALLBACK(post_unpatch_callback); + +#include static int pcspkr_event(struct input_dev *dev, unsigned int type, unsigned int code, int value) { unsigned int count = 0; unsigned long flags; + nop(); /* kpatch */ if (type != EV_SND) return -1;