powerpc/kprobes: Handle error returned by set_memory_rox()
authorChristophe Leroy <christophe.leroy@csgroup.eu>
Fri, 16 Feb 2024 10:13:28 +0000 (11:13 +0100)
committerMichael Ellerman <mpe@ellerman.id.au>
Thu, 22 Feb 2024 10:55:33 +0000 (21:55 +1100)
set_memory_rox() can fail.

In case it fails, free allocated memory and return NULL.

Link: https://github.com/KSPP/linux/issues/7
Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://msgid.link/b4907cf4339bd086abc40430d91311436cb0c18e.1708078401.git.christophe.leroy@csgroup.eu
arch/powerpc/kernel/kprobes.c

index b20ee72e873a1b881283ded2c8ffef94acf187f7..bbca90a5e2ec07a59903b87bf2d50f6a194235fd 100644 (file)
@@ -134,10 +134,16 @@ void *alloc_insn_page(void)
        if (!page)
                return NULL;
 
-       if (strict_module_rwx_enabled())
-               set_memory_rox((unsigned long)page, 1);
+       if (strict_module_rwx_enabled()) {
+               int err = set_memory_rox((unsigned long)page, 1);
 
+               if (err)
+                       goto error;
+       }
        return page;
+error:
+       module_memfree(page);
+       return NULL;
 }
 
 int arch_prepare_kprobe(struct kprobe *p)