|
| 1 | +diff -Nupr src.orig/drivers/input/joydev.c src/drivers/input/joydev.c |
| 2 | +--- src.orig/drivers/input/joydev.c 2023-01-12 11:20:06.597707083 -0500 |
| 3 | ++++ src/drivers/input/joydev.c 2023-01-12 11:20:38.032893465 -0500 |
| 4 | +@@ -1096,3 +1096,47 @@ static void __exit joydev_exit(void) |
| 5 | + |
| 6 | + module_init(joydev_init); |
| 7 | + module_exit(joydev_exit); |
| 8 | ++ |
| 9 | ++#include <linux/module.h> |
| 10 | ++#include "kpatch-macros.h" |
| 11 | ++ |
| 12 | ++static const char *const module_state[] = { |
| 13 | ++ [MODULE_STATE_LIVE] = "[MODULE_STATE_LIVE] Normal state", |
| 14 | ++ [MODULE_STATE_COMING] = "[MODULE_STATE_COMING] Full formed, running module_init", |
| 15 | ++ [MODULE_STATE_GOING] = "[MODULE_STATE_GOING] Going away", |
| 16 | ++ [MODULE_STATE_UNFORMED] = "[MODULE_STATE_UNFORMED] Still setting it up", |
| 17 | ++}; |
| 18 | ++ |
| 19 | ++static void callback_info(const char *callback, patch_object *obj) |
| 20 | ++{ |
| 21 | ++ if (obj->mod) |
| 22 | ++ pr_info("%s: %s -> %s\n", callback, obj->mod->name, |
| 23 | ++ module_state[obj->mod->state]); |
| 24 | ++ else |
| 25 | ++ pr_info("%s: vmlinux\n", callback); |
| 26 | ++} |
| 27 | ++ |
| 28 | ++static int pre_patch_callback(patch_object *obj) |
| 29 | ++{ |
| 30 | ++ callback_info(__func__, obj); |
| 31 | ++ return 0; /* return -ENODEV; */ |
| 32 | ++} |
| 33 | ++KPATCH_PRE_PATCH_CALLBACK(pre_patch_callback); |
| 34 | ++ |
| 35 | ++static void post_patch_callback(patch_object *obj) |
| 36 | ++{ |
| 37 | ++ callback_info(__func__, obj); |
| 38 | ++} |
| 39 | ++KPATCH_POST_PATCH_CALLBACK(post_patch_callback); |
| 40 | ++ |
| 41 | ++static void pre_unpatch_callback(patch_object *obj) |
| 42 | ++{ |
| 43 | ++ callback_info(__func__, obj); |
| 44 | ++} |
| 45 | ++KPATCH_PRE_UNPATCH_CALLBACK(pre_unpatch_callback); |
| 46 | ++ |
| 47 | ++static void post_unpatch_callback(patch_object *obj) |
| 48 | ++{ |
| 49 | ++ callback_info(__func__, obj); |
| 50 | ++} |
| 51 | ++KPATCH_POST_UNPATCH_CALLBACK(post_unpatch_callback); |
| 52 | +diff -Nupr src.orig/drivers/input/misc/pcspkr.c src/drivers/input/misc/pcspkr.c |
| 53 | +--- src.orig/drivers/input/misc/pcspkr.c 2023-01-12 11:20:06.578706970 -0500 |
| 54 | ++++ src/drivers/input/misc/pcspkr.c 2023-01-12 11:20:38.032893465 -0500 |
| 55 | +@@ -134,3 +134,46 @@ static struct platform_driver pcspkr_pla |
| 56 | + }; |
| 57 | + module_platform_driver(pcspkr_platform_driver); |
| 58 | + |
| 59 | ++#include <linux/module.h> |
| 60 | ++#include "kpatch-macros.h" |
| 61 | ++ |
| 62 | ++static const char *const module_state[] = { |
| 63 | ++ [MODULE_STATE_LIVE] = "[MODULE_STATE_LIVE] Normal state", |
| 64 | ++ [MODULE_STATE_COMING] = "[MODULE_STATE_COMING] Full formed, running module_init", |
| 65 | ++ [MODULE_STATE_GOING] = "[MODULE_STATE_GOING] Going away", |
| 66 | ++ [MODULE_STATE_UNFORMED] = "[MODULE_STATE_UNFORMED] Still setting it up", |
| 67 | ++}; |
| 68 | ++ |
| 69 | ++static void callback_info(const char *callback, patch_object *obj) |
| 70 | ++{ |
| 71 | ++ if (obj->mod) |
| 72 | ++ pr_info("%s: %s -> %s\n", callback, obj->mod->name, |
| 73 | ++ module_state[obj->mod->state]); |
| 74 | ++ else |
| 75 | ++ pr_info("%s: vmlinux\n", callback); |
| 76 | ++} |
| 77 | ++ |
| 78 | ++static int pre_patch_callback(patch_object *obj) |
| 79 | ++{ |
| 80 | ++ callback_info(__func__, obj); |
| 81 | ++ return 0; |
| 82 | ++} |
| 83 | ++KPATCH_PRE_PATCH_CALLBACK(pre_patch_callback); |
| 84 | ++ |
| 85 | ++static void post_patch_callback(patch_object *obj) |
| 86 | ++{ |
| 87 | ++ callback_info(__func__, obj); |
| 88 | ++} |
| 89 | ++KPATCH_POST_PATCH_CALLBACK(post_patch_callback); |
| 90 | ++ |
| 91 | ++static void pre_unpatch_callback(patch_object *obj) |
| 92 | ++{ |
| 93 | ++ callback_info(__func__, obj); |
| 94 | ++} |
| 95 | ++KPATCH_PRE_UNPATCH_CALLBACK(pre_unpatch_callback); |
| 96 | ++ |
| 97 | ++static void post_unpatch_callback(patch_object *obj) |
| 98 | ++{ |
| 99 | ++ callback_info(__func__, obj); |
| 100 | ++} |
| 101 | ++KPATCH_POST_UNPATCH_CALLBACK(post_unpatch_callback); |
| 102 | +diff -Nupr src.orig/fs/aio.c src/fs/aio.c |
| 103 | +--- src.orig/fs/aio.c 2023-01-12 11:20:07.273711091 -0500 |
| 104 | ++++ src/fs/aio.c 2023-01-12 11:20:38.033893471 -0500 |
| 105 | +@@ -50,6 +50,50 @@ |
| 106 | + |
| 107 | + #define KIOCB_KEY 0 |
| 108 | + |
| 109 | ++#include <linux/module.h> |
| 110 | ++#include "kpatch-macros.h" |
| 111 | ++ |
| 112 | ++static const char *const module_state[] = { |
| 113 | ++ [MODULE_STATE_LIVE] = "[MODULE_STATE_LIVE] Normal state", |
| 114 | ++ [MODULE_STATE_COMING] = "[MODULE_STATE_COMING] Full formed, running module_init", |
| 115 | ++ [MODULE_STATE_GOING] = "[MODULE_STATE_GOING] Going away", |
| 116 | ++ [MODULE_STATE_UNFORMED] = "[MODULE_STATE_UNFORMED] Still setting it up", |
| 117 | ++}; |
| 118 | ++ |
| 119 | ++static void callback_info(const char *callback, patch_object *obj) |
| 120 | ++{ |
| 121 | ++ if (obj->mod) |
| 122 | ++ pr_info("%s: %s -> %s\n", callback, obj->mod->name, |
| 123 | ++ module_state[obj->mod->state]); |
| 124 | ++ else |
| 125 | ++ pr_info("%s: vmlinux\n", callback); |
| 126 | ++} |
| 127 | ++ |
| 128 | ++static int pre_patch_callback(patch_object *obj) |
| 129 | ++{ |
| 130 | ++ callback_info(__func__, obj); |
| 131 | ++ return 0; |
| 132 | ++} |
| 133 | ++KPATCH_PRE_PATCH_CALLBACK(pre_patch_callback); |
| 134 | ++ |
| 135 | ++static void post_patch_callback(patch_object *obj) |
| 136 | ++{ |
| 137 | ++ callback_info(__func__, obj); |
| 138 | ++} |
| 139 | ++KPATCH_POST_PATCH_CALLBACK(post_patch_callback); |
| 140 | ++ |
| 141 | ++static void pre_unpatch_callback(patch_object *obj) |
| 142 | ++{ |
| 143 | ++ callback_info(__func__, obj); |
| 144 | ++} |
| 145 | ++KPATCH_PRE_UNPATCH_CALLBACK(pre_unpatch_callback); |
| 146 | ++ |
| 147 | ++static void post_unpatch_callback(patch_object *obj) |
| 148 | ++{ |
| 149 | ++ callback_info(__func__, obj); |
| 150 | ++} |
| 151 | ++KPATCH_POST_UNPATCH_CALLBACK(post_unpatch_callback); |
| 152 | ++ |
| 153 | + #define AIO_RING_MAGIC 0xa10a10a1 |
| 154 | + #define AIO_RING_COMPAT_FEATURES 1 |
| 155 | + #define AIO_RING_INCOMPAT_FEATURES 0 |
0 commit comments