Linuxカーネルもくもく会 #11でやったことです。Linux kernel 4.0 のlivepatchを調べてみる。patchとなるsamples/livepatch/にあるlivepatch-sample.cからスタートして読んでいきましょう。livepatchモジュールにpatchを登録するまでを見ていきます。 まずはpatchのデータ構造。構造体は3種類あって、これらで階層化構造になっている。 struct klp_func struct klp_object struct klp_patch まずは最下層のstruct klp_funcから見てみます。構造体の定義はinclude/linu/livepatch.hにあって、見てみるとpatchのモジュールがセットする変数とlivepatch内部用の変数があります。old_addrはoptionalでシンボル名が重複している場合