Re: [RFC PATCH v3 4/6] livepatch: reuse module loader code to write relocations

From: Jiri Kosina
Date: Wed Jan 13 2016 - 04:31:24 EST


On Wed, 13 Jan 2016, Miroslav Benes wrote:

> > {
> > - int ret = 0;
> > - unsigned long val;
> > - struct klp_reloc *reloc;
> > + int i, len, ret = 0;
> > + char *secname;
> > + const char *objname;
> >
> > if (WARN_ON(!klp_is_object_loaded(obj)))
> > return -EINVAL;
> >
> > - if (WARN_ON(!obj->relocs))
> > - return -EINVAL;
> > + objname = klp_is_module(obj) ? obj->name : "vmlinux";
> >
> > module_disable_ro(pmod);
> > + /* For each klp rela section for this object */
> > + for (i = 1; i < pmod->info->hdr->e_shnum; i++) {
> > + if (!(pmod->info->sechdrs[i].sh_flags & SHF_RELA_LIVEPATCH))
> > + continue;
>
> One more thing. If the module does not specify it is a live patch module
> in modinfo (with MODULE_INFO(livepatch, "Y")), but it is a perfect live
> patch module otherwise (it calls klp_register_patch in its init function),

Side note: I think we should at least issue some light warning in such
case anyway.

--
Jiri Kosina
SUSE Labs