aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/livepatch/core.c
diff options
context:
space:
mode:
authorJiri Kosina <jkosina@suse.cz>2016-04-07 12:06:25 -0400
committerJiri Kosina <jkosina@suse.cz>2016-04-07 14:42:38 -0400
commit61bf12d3304d78ff499245ea995858c3bedb162e (patch)
treee0f558a6afea387144af7561e1cc6a978c82ea48 /kernel/livepatch/core.c
parent3b812ecce736432e6b55e77028ea387eb1517d24 (diff)
livepatch: robustify klp_register_patch() API error checking
Commit 425595a7fc20 ("livepatch: reuse module loader code to write relocations") adds a possibility of dereferncing pointers supplied by the consumer of the livepatch API before sanity (NULL) checking them (patch and patch->mod). Spotted by smatch tool. Reported-by: Dan Carpenter <dan.carpenter@oracle.com> Acked-by: Josh Poimboeuf <jpoimboe@redhat.com> Acked-by: Jessica Yu <jeyu@redhat.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Diffstat (limited to 'kernel/livepatch/core.c')
-rw-r--r--kernel/livepatch/core.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/kernel/livepatch/core.c b/kernel/livepatch/core.c
index eb5db6e837aa..28c37fa3d3f9 100644
--- a/kernel/livepatch/core.c
+++ b/kernel/livepatch/core.c
@@ -876,6 +876,9 @@ int klp_register_patch(struct klp_patch *patch)
876{ 876{
877 int ret; 877 int ret;
878 878
879 if (!patch || !patch->mod)
880 return -EINVAL;
881
879 if (!is_livepatch_module(patch->mod)) { 882 if (!is_livepatch_module(patch->mod)) {
880 pr_err("module %s is not marked as a livepatch module", 883 pr_err("module %s is not marked as a livepatch module",
881 patch->mod->name); 884 patch->mod->name);
@@ -885,9 +888,6 @@ int klp_register_patch(struct klp_patch *patch)
885 if (!klp_initialized()) 888 if (!klp_initialized())
886 return -ENODEV; 889 return -ENODEV;
887 890
888 if (!patch || !patch->mod)
889 return -EINVAL;
890
891 /* 891 /*
892 * A reference is taken on the patch module to prevent it from being 892 * A reference is taken on the patch module to prevent it from being
893 * unloaded. Right now, we don't allow patch modules to unload since 893 * unloaded. Right now, we don't allow patch modules to unload since