Skip to content

Frequently Asked Questions

fripSide edited this page Jan 13, 2022 · 5 revisions

1. What's the difference between RapidPatch and KPatch (or other Linux Live Patch tools)?

People may wonder why we propose yet another live patch tool, RapidPatch, given that there are several mature live patching tools in Linux, such as ksplice, kgraft, and kpatch. 

This is because all these works cannot be used on resource-constrained embedded devices that do not support Linux. More specifically, all the inline hook-based hot patching solutions cannot be used in embedded devices with ROM (cannot be modified) or flash (its sector needs to be erased before rewriting). Thus, we propose hardware breakpoint-based approaches to implement the KProbe mechanism to redirect the control flow without modifying the executed code.

Another reason is that the Linux live patching approaches (includes kpatch) all need to recompile the kernel to generate binary patches by diffing the new binary with the origin binary. It requires merging the source code patches into the kernel's codebase first and then. In the embedded world, more than one kernel (RTOS) is used by heterogeneous devices (in different architectures, or even use different instruction sets). Thus, merging the source code patch to their own branches and recompiling the firmware can be a heavy workload for the vendors who maintain multiple devices. RapidPatch enables the vendor to fix the same bug in the different codebases and different devices using just one eBPF patch.

Clone this wiki locally