On Wed, 13 Jan 2016, Miroslav Benes wrote:
quoted
{
- 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