kGraft — live kernel patching from SUSE
kGraft builds on technologies and ideas that are already present in the kernel: ftrace and its mcount-based reserved space in function headers, the INT3/IPI-NMI patching also used in jumplabels, and RCU-like update of code that does not require stopping the kernel. A kGraft patch is a kernel module and fully relies on the in-kernel module loader to link the new code with the kernel. Thanks to all that, the design can be nicely minimalistic." The first code release is planned for March.
Posted Feb 3, 2014 19:37 UTC (Mon)
by SEJeff (guest, #51588)
[Link] (18 responses)
I do wonder how this will end up working out, but I seem to expect a legal fight ie: if SUSE ships this to customers, Oracle legal will be calling.
Posted Feb 3, 2014 19:50 UTC (Mon)
by k8to (guest, #15413)
[Link] (9 responses)
Posted Feb 3, 2014 19:58 UTC (Mon)
by SEJeff (guest, #51588)
[Link] (4 responses)
https://www.google.com/patents/US20100269106?dq=ininvento...
Just saying these are awfully similar and I'd hate to see it shut down by patent trolling / FUD. This is something that would be fantastic to see for production quality kernel upgrades (for telcom style uptime requirements).
Posted Feb 3, 2014 20:16 UTC (Mon)
by oshepherd (guest, #90163)
[Link] (3 responses)
Safe hot patching is done by first setting up the long jump, then doing an atomic replacement of the 2 byte NOP with the backwards jump. No need to detect if the code is in use; anybody already executing the old code will successfully continue to do so.
This would require compiling the kernel with such prologues. The need to insert a 2 byte NOP can be obviated in cases where the first instruction is already >=2 bytes long.
On the one hand, this would permit working around the Oracle patents. On the other hand, there is a need to watch out for Microsoft patents..
Posted Feb 3, 2014 20:34 UTC (Mon)
by amacater (subscriber, #790)
[Link]
Posted Feb 3, 2014 22:16 UTC (Mon)
by SEJeff (guest, #51588)
[Link]
Posted Feb 4, 2014 1:02 UTC (Tue)
by stressinduktion (subscriber, #46452)
[Link]
Posted Feb 3, 2014 20:43 UTC (Mon)
by bokr (guest, #58369)
[Link] (3 responses)
Posted Feb 4, 2014 3:30 UTC (Tue)
by k8to (guest, #15413)
[Link]
Posted Feb 5, 2014 17:13 UTC (Wed)
by drag (guest, #31333)
[Link] (1 responses)
A patent covers a specific set of steps to accomplish something.
So unless Erlang did it's code injection in the same/similar enough manner (very arbitrary) as this new implementation then it's not really relevant to the patent situation.
Posted Feb 6, 2014 7:11 UTC (Thu)
by smurf (subscriber, #17840)
[Link]
Looking at a few software patents out there, I beg to differ …
NB: *its code injection.
Posted Feb 3, 2014 22:16 UTC (Mon)
by jhhaller (guest, #56103)
[Link] (7 responses)
Live patching was a feature of telecom systems back in the 80's on a Unix base. Patching the kernel was the easy part. The hard part was patching shared libraries. Patches with data structure changes caused problems as well. Spare areas in structures and arrays were manually maintained and kept zeroed, so that they could be reallocated for a new piece of data. There was also a performance penalty, as all subroutine calls were indirect through a transfer vector, an array of jump tables. The entire array could be replaced, so that any particular process would only see the new functions when the process reentered its event loop.
Being able to live-patch the kernel without being able to live-patch shared libraries and long-running executables only addresses part of the problem. I expect that it would be valuable to clouds if the qemu process and it's libraries could be live-patched. But there will still be firmware to patched, and it's best to boot onto the new firmware when installed to be sure it works.
Posted Feb 4, 2014 4:10 UTC (Tue)
by joyuh (guest, #95216)
[Link] (6 responses)
Posted Feb 4, 2014 8:56 UTC (Tue)
by pbonzini (subscriber, #60935)
[Link] (4 responses)
Posted Feb 4, 2014 9:54 UTC (Tue)
by dgm (subscriber, #49227)
[Link] (3 responses)
In fact, an alternative method to update the kernel would be to boot a second kernel and migrate processes to it using this mechanism.
Maybe one day.
Posted Feb 4, 2014 13:37 UTC (Tue)
by ledow (guest, #11753)
[Link] (2 responses)
There's plenty of reasons that something like ksplice would be superior under certain workloads than trying to revive a (dead) concept / software project.
Posted Feb 4, 2014 22:11 UTC (Tue)
by dgm (subscriber, #49227)
[Link]
Posted Feb 6, 2014 17:54 UTC (Thu)
by cov (guest, #84351)
[Link]
Posted Feb 4, 2014 14:22 UTC (Tue)
by jhhaller (guest, #56103)
[Link]
Posted Feb 4, 2014 7:45 UTC (Tue)
by paravoid (subscriber, #32869)
[Link] (3 responses)
The timing is interesting though: this past year we've seen effort towards the (so-called) "secure boot" functionality and I can only assume from the description it'd be directly incompatible.
Posted Feb 4, 2014 7:57 UTC (Tue)
by mchapman (subscriber, #66589)
[Link]
I can't see why it would be incompatible if the updates themselves were signed.
Posted Feb 4, 2014 17:11 UTC (Tue)
by SEJeff (guest, #51588)
[Link] (1 responses)
Posted Feb 5, 2014 9:44 UTC (Wed)
by cyperpunks (subscriber, #39406)
[Link]
Please stop this FUD.
Watch this to get a clue:
http://www.mysqlperformanceblog.com/2014/01/22/past-prese...
kGraft — live kernel patching from SUSE
https://www.google.com/?tbm=pts#q=ininventor%3A%22Jeffrey...
kGraft — live kernel patching from SUSE
kGraft — live kernel patching from SUSE
https://www.google.com/patents/US8612951?dq=ininventor:%2...
https://www.google.com/patents/US8607208?dq=ininventor:%2...
kGraft — live kernel patching from SUSE
kGraft — live kernel patching from SUSE
kGraft — live kernel patching from SUSE
kGraft — live kernel patching from SUSE
kGraft — live kernel patching from SUSE
kGraft — live kernel patching from SUSE
kGraft — live kernel patching from SUSE
kGraft — live kernel patching from SUSE
kGraft — live kernel patching from SUSE
kGraft — live kernel patching from SUSE
kGraft — live kernel patching from SUSE
kGraft — live kernel patching from SUSE
kGraft — live kernel patching from SUSE
kGraft — live kernel patching from SUSE
kGraft — live kernel patching from SUSE
kGraft — live kernel patching from SUSE
kGraft — live kernel patching from SUSE
kGraft — live kernel patching from SUSE
kGraft — live kernel patching from SUSE
kGraft — live kernel patching from SUSE