]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
dtrace: do not allocate space for trampolines when probec = 0
authorKris Van Hees <kris.van.hees@oracle.com>
Wed, 8 Jul 2015 03:37:14 +0000 (23:37 -0400)
committerNick Alcock <nick.alcock@oracle.com>
Tue, 21 Jul 2015 14:30:17 +0000 (15:30 +0100)
When it is known that a module does not contain any SDT probes, do
not try to allocate a 0-sized memory block for trampolines.

Signed-off-by: Kris Van Hees <kris.van.hees@oracle.com>
Acked-by: Nick Alcock <nick.alcock@oracle.com>
Acked-by: Allen Pais <allen.pais@oracle.com>
arch/sparc/kernel/module.c

index 08c9d2742043d0479e8c7ebcafa40dce7cd402f0..86a4e3246c52e178570bfc1f8de65a03147fd9c0 100644 (file)
 #include <linux/ctype.h>
 #include <linux/mm.h>
 
-#include <asm/dtrace_arch.h>
 #include <asm/processor.h>
 #include <asm/spitfire.h>
 #include <asm/cacheflush.h>
+#ifdef CONFIG_DTRACE
+# include <asm/dtrace_arch.h>
+#endif
 
 #include "entry.h"
 
@@ -223,18 +225,22 @@ int module_finalize(const Elf_Ehdr *hdr,
                __asm__ __volatile__("flush %g6");
        }
 
-#ifdef CONFIG_DTRACE
-       me->pdata = module_alloc(me->sdt_probec * SDT_TRAMP_SIZE *
-                                sizeof(asm_instr_t));
-#endif
+# ifdef CONFIG_DTRACE
+       if (me->sdt_probec > 0)
+               me->pdata = module_alloc(me->sdt_probec * SDT_TRAMP_SIZE *
+                                        sizeof(asm_instr_t));
+       else
+               me->pdata = NULL;
+# endif
 
        return 0;
 }
 
-#ifdef CONFIG_DTRACE
+# ifdef CONFIG_DTRACE
 void module_arch_cleanup(struct module *me)
 {
-       module_memfree(me->pdata);
+       if (me->pdata)
+               module_memfree(me->pdata);
 }
 #endif
 #endif /* CONFIG_SPARC64 */