diff options
| author | Maarten Lankhorst <maarten.lankhorst@linux.intel.com> | 2020-01-06 12:35:33 +0300 |
|---|---|---|
| committer | Maarten Lankhorst <maarten.lankhorst@linux.intel.com> | 2020-01-06 12:35:33 +0300 |
| commit | 22164fbe274c2dd96d2887fe121896d321000a61 (patch) | |
| tree | 629a8af05ecbe3ed8e18938de2564517c9b44d92 /include/linux/livepatch.h | |
| parent | 3d0dad869aeb5d8e81985c73a6c73428258f8083 (diff) | |
| parent | f5c547efa16c0ea5abff0596e829f502be11902e (diff) | |
| download | linux-22164fbe274c2dd96d2887fe121896d321000a61.tar.xz | |
Merge drm/drm-next into drm-misc-next
Requested, and we need v5.5-rc1 backported as our current branch is still based on v5.4.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Diffstat (limited to 'include/linux/livepatch.h')
| -rw-r--r-- | include/linux/livepatch.h | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/include/linux/livepatch.h b/include/linux/livepatch.h index 273400814020..e894e74905f3 100644 --- a/include/linux/livepatch.h +++ b/include/linux/livepatch.h @@ -131,9 +131,22 @@ struct klp_object { }; /** + * struct klp_state - state of the system modified by the livepatch + * @id: system state identifier (non-zero) + * @version: version of the change + * @data: custom data + */ +struct klp_state { + unsigned long id; + unsigned int version; + void *data; +}; + +/** * struct klp_patch - patch structure for live patching * @mod: reference to the live patch module * @objs: object entries for kernel objects to be patched + * @states: system states that can get modified * @replace: replace all actively used patches * @list: list node for global list of actively used patches * @kobj: kobject for sysfs resources @@ -147,6 +160,7 @@ struct klp_patch { /* external */ struct module *mod; struct klp_object *objs; + struct klp_state *states; bool replace; /* internal */ @@ -217,6 +231,9 @@ void *klp_shadow_get_or_alloc(void *obj, unsigned long id, void klp_shadow_free(void *obj, unsigned long id, klp_shadow_dtor_t dtor); void klp_shadow_free_all(unsigned long id, klp_shadow_dtor_t dtor); +struct klp_state *klp_get_state(struct klp_patch *patch, unsigned long id); +struct klp_state *klp_get_prev_state(unsigned long id); + #else /* !CONFIG_LIVEPATCH */ static inline int klp_module_coming(struct module *mod) { return 0; } |
