This is purely a theoretical issue, but if there were a module named
vmlinux.ko, the livepatch relocation code wouldn't be able to
distinguish between vmlinux-specific and vmlinux.o-specific KLP
relocations.

If CONFIG_LIVEPATCH is enabled, don't allow a module named vmlinux.ko.

Suggested-by: Peter Zijlstra <[email protected]>
Signed-off-by: Josh Poimboeuf <[email protected]>
Acked-by: Miroslav Benes <[email protected]>
Acked-by: Joe Lawrence <[email protected]>
---
 kernel/livepatch/core.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/kernel/livepatch/core.c b/kernel/livepatch/core.c
index c3512e7e0801..40cfac8156fd 100644
--- a/kernel/livepatch/core.c
+++ b/kernel/livepatch/core.c
@@ -1139,6 +1139,11 @@ int klp_module_coming(struct module *mod)
        if (WARN_ON(mod->state != MODULE_STATE_COMING))
                return -EINVAL;
 
+       if (!strcmp(mod->name, "vmlinux")) {
+               pr_err("vmlinux.ko: invalid module name");
+               return -EINVAL;
+       }
+
        mutex_lock(&klp_mutex);
        /*
         * Each module has to know that klp_module_coming()
-- 
2.21.1

Reply via email to