[PATCH] powerpc/modules: Use WARN_ON() in stub_for_addr()

Subsystems: linux for powerpc (32-bit and 64-bit), the rest

STALE3218d

5 messages, 3 authors, 2017-10-19 · open the first message on its own page

[PATCH] powerpc/modules: Use WARN_ON() in stub_for_addr()

From: Kamalesh Babulal <hidden>
Date: 2017-10-10 14:47:46

Use WARN_ON(), while running out of stubs in stub_for_addr()
and abort loading of the module instead of BUG_ON().

Signed-off-by: Kamalesh Babulal <redacted>
---
 arch/powerpc/kernel/module_64.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/arch/powerpc/kernel/module_64.c b/arch/powerpc/kernel/module_64.c
index 0b0f896..759104b 100644
--- a/arch/powerpc/kernel/module_64.c
+++ b/arch/powerpc/kernel/module_64.c
@@ -429,7 +429,8 @@ static unsigned long stub_for_addr(const Elf64_Shdr *sechdrs,
 	/* Find this stub, or if that fails, the next avail. entry */
 	stubs = (void *)sechdrs[me->arch.stubs_section].sh_addr;
 	for (i = 0; stub_func_addr(stubs[i].funcdata); i++) {
-		BUG_ON(i >= num_stubs);
+		if (WARN_ON(i >= num_stubs))
+			return 0;
 
 		if (stub_func_addr(stubs[i].funcdata) == func_addr(addr))
 			return (unsigned long)&stubs[i];
-- 
2.7.4

Re: [PATCH] powerpc/modules: Use WARN_ON() in stub_for_addr()

From: Michael Ellerman <mpe@ellerman.id.au>
Date: 2017-10-11 04:12:43

Kamalesh Babulal [off-list ref] writes:
Use WARN_ON(), while running out of stubs in stub_for_addr()
and abort loading of the module instead of BUG_ON().
Thanks. This looks good in principle. Have you actually tested it to
make sure we do in fact gracefully fail the module load?

cheers

Re: [PATCH] powerpc/modules: Use WARN_ON() in stub_for_addr()

From: Kamalesh Babulal <hidden>
Date: 2017-10-11 04:56:52

On Wednesday 11 October 2017 09:42 AM, Michael Ellerman wrote:
Kamalesh Babulal [off-list ref] writes:
quoted
Use WARN_ON(), while running out of stubs in stub_for_addr()
and abort loading of the module instead of BUG_ON().
Thanks. This looks good in principle. Have you actually tested it to
make sure we do in fact gracefully fail the module load?
Thanks for the review. I tested with little hackish version of this patch:

+       if (!strncmp(me->name, "live", 4))
+               j = 100;
+       for (i = 0; stub_func_addr(stubs[i].funcdata); i+=j) {
+               if (WARN_ON(i >= num_stubs))
+                       return 0;

and it fails gracefully.

# modprobe livepatch-sample
modprobe: ERROR: could not insert 'livepatch_sample': Unknown symbol in module, or unknown parameter (see dmesg)

# echo $?
1

# dmesg 
------------[ cut here ]------------
WARNING: CPU: 2 PID: 2836 at arch/powerpc/kernel/module_64.c:526 apply_relocate_add+0x71c/0xb00

-- 
cheers,
Kamalesh.

Re: [PATCH] powerpc/modules: Use WARN_ON() in stub_for_addr()

From: Michael Ellerman <mpe@ellerman.id.au>
Date: 2017-10-12 04:29:22

Kamalesh Babulal [off-list ref] writes:
On Wednesday 11 October 2017 09:42 AM, Michael Ellerman wrote:
quoted
Kamalesh Babulal [off-list ref] writes:
quoted
Use WARN_ON(), while running out of stubs in stub_for_addr()
and abort loading of the module instead of BUG_ON().
Thanks. This looks good in principle. Have you actually tested it to
make sure we do in fact gracefully fail the module load?
Thanks for the review. I tested with little hackish version of this patch:

+       if (!strncmp(me->name, "live", 4))
+               j = 100;
+       for (i = 0; stub_func_addr(stubs[i].funcdata); i+=j) {
+               if (WARN_ON(i >= num_stubs))
+                       return 0;

and it fails gracefully.

# modprobe livepatch-sample
modprobe: ERROR: could not insert 'livepatch_sample': Unknown symbol in module, or unknown parameter (see dmesg)

# echo $?
1

# dmesg 
------------[ cut here ]------------
WARNING: CPU: 2 PID: 2836 at arch/powerpc/kernel/module_64.c:526 apply_relocate_add+0x71c/0xb00
Thanks.

cheers

Re: powerpc/modules: Use WARN_ON() in stub_for_addr()

From: Michael Ellerman <hidden>
Date: 2017-10-19 04:48:25

On Tue, 2017-10-10 at 14:47:32 UTC, Kamalesh Babulal wrote:
Use WARN_ON(), while running out of stubs in stub_for_addr()
and abort loading of the module instead of BUG_ON().

Signed-off-by: Kamalesh Babulal <redacted>
Applied to powerpc next, thanks.

https://git.kernel.org/powerpc/c/1c0437af9fca8de6e4ba179d18cf13

cheers
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help