Re: livepatch: separate enabled and patched states

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



+++ Josh Poimboeuf [25/03/16 14:34 -0500]:
Once we have a consistency model, patches and their objects will be
enabled and disabled at different times.  For example, when a patch is
disabled, its loaded objects' funcs can remain registered with ftrace
indefinitely until the unpatching operation is complete and they're no
longer in use.

It's less confusing if we give them different names: patches can be
enabled or disabled; objects (and their funcs) can be patched or
unpatched:

- Enabled means that a patch is logically enabled (but not necessarily
 fully applied).

- Patched means that an object's funcs are registered with ftrace and
 added to the klp_ops func stack.

Also, since these states are binary, represent them with booleans
instead of ints.

Signed-off-by: Josh Poimboeuf <jpoimboe@xxxxxxxxxx>
---
include/linux/livepatch.h | 17 ++++-------
kernel/livepatch/core.c   | 72 +++++++++++++++++++++++------------------------
2 files changed, 42 insertions(+), 47 deletions(-)

diff --git a/include/linux/livepatch.h b/include/linux/livepatch.h
index bd830d5..6d45dc7 100644
--- a/include/linux/livepatch.h
+++ b/include/linux/livepatch.h
@@ -28,11 +28,6 @@

#include <asm/livepatch.h>

-enum klp_state {
-	KLP_DISABLED,
-	KLP_ENABLED
-};
-
/**
 * struct klp_func - function structure for live patching
 * @old_name:	name of the function to be patched
@@ -41,8 +36,8 @@ enum klp_state {
 *		can be found (optional)
 * @old_addr:	the address of the function being patched
 * @kobj:	kobject for sysfs resources
- * @state:	tracks function-level patch application state
 * @stack_node:	list node for klp_ops func_stack list
+ * @patched:	the func has been added to the klp_ops list
 */
struct klp_func {
	/* external */
@@ -60,8 +55,8 @@ struct klp_func {
	/* internal */
	unsigned long old_addr;
	struct kobject kobj;
-	enum klp_state state;
	struct list_head stack_node;
+	bool patched;
};

/**
@@ -90,7 +85,7 @@ struct klp_reloc {
 * @kobj:	kobject for sysfs resources
 * @mod:	kernel module associated with the patched object
 * 		(NULL for vmlinux)
- * @state:	tracks object-level patch application state
+ * @patched:	the object's funcs have been add to the klp_ops list

s/add/added :)

--
To unsubscribe from this list: send the line "unsubscribe live-patching" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux Kernel]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux