• Petr Mladek's avatar
    livepatch: Allow to distinguish different version of system state changes · 92c9abf5
    Petr Mladek authored
    The atomic replace runs pre/post (un)install callbacks only from the new
    livepatch. There are several reasons for this:
    
      + Simplicity: clear ordering of operations, no interactions between
    	old and new callbacks.
    
      + Reliability: only new livepatch knows what changes can already be made
    	by older livepatches and how to take over the state.
    
      + Testing: the atomic replace can be properly tested only when a newer
    	livepatch is available. It might be too late to fix unwanted effect
    	of callbacks from older	livepatches.
    
    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.
    
    Link: http://lkml.kernel.org/r/20191030154313.13263-4-pmladek@suse.com
    To: Jiri Kosina <jikos@kernel.org>
    Cc: Kamalesh Babulal <kamalesh@linux.vnet.ibm.com>
    Cc: Nicolai Stange <nstange@suse.de>
    Cc: live-patching@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Acked-by: default avatarMiroslav Benes <mbenes@suse.cz>
    Acked-by: default avatarJoe Lawrence <joe.lawrence@redhat.com>
    Acked-by: default avatarJosh Poimboeuf <jpoimboe@redhat.com>
    Signed-off-by: default avatarPetr Mladek <pmladek@suse.com>
    92c9abf5
state.c 3.08 KB