Thread (1 message) 1 message, 1 author, 2019-07-18

Re: [RFC 3/5] livepatch: Allow to distinguish different version of system state changes

From: Petr Mladek <pmladek@suse.com>
Date: 2019-07-18 09:08:03
Also in: lkml

On Tue 2019-06-11 15:56:25, Petr Mladek wrote:
quoted hunk
It might happen that an older change is not enough and the same system
state has to be modified another way. Different changes need to get
distinguished by a version number added to struct klp_state.

The version can also be used to prevent loading incompatible livepatches.
The check is done when the livepatch is enabled. The rules are:

  + Any completely new system state modification is allowed.

  + System state modifications with the same or higher version are allowed
    for already modified system states.

  + Cumulative livepatches must handle all system state modifications from
    already installed livepatches.

  + Non-cumulative livepatches are allowed to touch already modified
    system states.

Signed-off-by: Petr Mladek <pmladek@suse.com>
---
 include/linux/livepatch.h |  2 ++
 kernel/livepatch/core.c   |  8 ++++++++
 kernel/livepatch/state.c  | 40 +++++++++++++++++++++++++++++++++++++++-
 kernel/livepatch/state.h  |  9 +++++++++
 4 files changed, 58 insertions(+), 1 deletion(-)
 create mode 100644 kernel/livepatch/state.h
diff --git a/include/linux/livepatch.h b/include/linux/livepatch.h
index 591abdee30d7..8bc4c6cc3f3f 100644
--- a/include/linux/livepatch.h
+++ b/include/linux/livepatch.h
@@ -135,10 +135,12 @@ 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 (non-zero)
  * @data:	custom data
  */
 struct klp_state {
 	int id;
As suggested by Nicolay, there will be in v2:

	unsigned long id;
+	int version;
It would make sense to make "version" unsigned as well.
I am just unsure about the size:

  + "unsigned long" looks like an overhead to me
  + "u8" might be enough

But I would stay on the safe side and use:

	unsigned int version;

Is anyone against?

Best Regards,
Petr
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help