On Mon 2015-03-02 09:35:30, Peter Zijlstra wrote: > On Sun, Mar 01, 2015 at 09:09:24PM +0100, Jiri Kosina wrote: > > On Sat, 28 Feb 2015, Peter Zijlstra wrote: > > > > > While one must hold RCU-sched (aka. preempt_disable) for find_symbol() > > > one must equally hold it over the use of the object returned. > > > > > > The moment you release the RCU-sched read lock, the object can be dead > > > and gone. > > > > > > Cc: Seth Jennings <sjenn...@redhat.com> > > > Cc: Josh Poimboeuf <jpoim...@redhat.com> > > > Cc: Masami Hiramatsu <masami.hiramatsu...@hitachi.com> > > > Cc: Miroslav Benes <mbe...@suse.cz> > > > Cc: Petr Mladek <pmla...@suse.cz> > > > Cc: Jiri Kosina <jkos...@suse.cz> > > > Cc: "Paul E. McKenney" <paul...@linux.vnet.ibm.com> > > > Cc: Rusty Russell <ru...@rustcorp.com.au> > > > Signed-off-by: Peter Zijlstra (Intel) <pet...@infradead.org> > > > > Acked-by: Jiri Kosina <jkos...@suse.cz> > > > > I guess you'll be taking this together with the series, so I am not > > applying it. > > Feel free to take it; this series might take a wee while longer to > mature. > > That said; I do have a follow up question on that code. So now you've > successfully obtained an address in module space; but the moment you > release that RCU-sched lock, the module can be gone. > > How does the whole live patching stuff deal with module removal during > patching?
There is a notifier, see klp_module_notify(). It applies existing patches when an affected module is loaded. Also it removes patches when an affected module is going. It is serialized with the other operations using the klp_mutex lock. Hmm, when I think about it. I am afraid that there is a race. For example, the going module might be unpatched by the notifier but a new patch might get applied when it is still visible by kallsyms. I am going to look at it. Best Regards, Petr -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/