diff --git a/drivers/input/joydev.c b/drivers/input/joydev.c index 4c1e427..7e46aaf 100644 --- a/drivers/input/joydev.c +++ b/drivers/input/joydev.c @@ -1068,3 +1068,47 @@ static void __exit joydev_exit(void) module_init(joydev_init); module_exit(joydev_exit); + +#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; /* return -ENODEV; */ +} +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); diff --git a/drivers/input/misc/pcspkr.c b/drivers/input/misc/pcspkr.c index 56ddba2..d188b12 100644 --- a/drivers/input/misc/pcspkr.c +++ b/drivers/input/misc/pcspkr.c @@ -138,3 +138,46 @@ static void pcspkr_shutdown(struct platform_device *dev) }; module_platform_driver(pcspkr_platform_driver); +#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); diff --git a/fs/aio.c b/fs/aio.c index e1f8f01..5efe496 100644 --- a/fs/aio.c +++ b/fs/aio.c @@ -49,6 +49,50 @@ #define KIOCB_KEY 0 +#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); + #define AIO_RING_MAGIC 0xa10a10a1 #define AIO_RING_COMPAT_FEATURES 1 #define AIO_RING_INCOMPAT_FEATURES 0