On Mon, Apr 16, 2018 at 01:36:45PM +0200, Petr Mladek wrote: > Nikolai started to use shadow variables and found that list_head > is not initialized correctly using the existing API. > > The problem is that LIST_HEAD_INIT() set pointers to itself. > klp_shadow_alloc() then copies these pointers to another location. > > It would be possible to solve this by a late initialization. But > this does not work well with klp_shadow_get_or_alloc(). Also this > behavior is error prone. Note that list_head might be hidden in > another structure, for example mutex. > > I suggest to change the API and allow to initialize the shadow > variables using a custom callback. I think that we have already > talked about this but we decided to go the easier way. It seems > that it was a bad decision. > > I send also patch that add a symmetric callback to the klp_shadow_free() > functions. It might be handy especially for klp_shadow_free_all(). > > > Changes against v2: > > + Use pr_err() instead of WARN() when ctor() fails [Josh] > + Some typos [Mirek] > > > Changes against v1: > > + Rename init/free callbacks to ctor/dtor > + Misc update of comments and commit messages > + Fix sizeof() in the sample code in shadow-vars.txt Acked-by: Josh Poimboeuf <jpoimboe@xxxxxxxxxx> -- Josh -- To unsubscribe from this list: send the line "unsubscribe live-patching" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html