Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 09e56a2d authored by Phil Carmody's avatar Phil Carmody Committed by Russell King
Browse files

ARM: 6340/1: module - additional unwind tables for exit/devexit sections



Without these, exit functions cannot be stack-traced, so to speak.
This implies that module unloads that perform allocations (don't
laugh) will cause noisy warnings on the console when kmemleak is
enabled, as it presumes that all code's call chains are traceable.
Similarly, BUGs and WARN_ONs will give additional console spam.

Signed-off-by: default avatarPhil Carmody <ext-phil.2.carmody@nokia.com>
Acked-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent e5f7772e
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -17,6 +17,8 @@ enum {
	ARM_SEC_INIT,
	ARM_SEC_DEVINIT,
	ARM_SEC_CORE,
	ARM_SEC_EXIT,
	ARM_SEC_DEVEXIT,
	ARM_SEC_MAX,
};
struct mod_arch_specific {
+8 −0
Original line number Diff line number Diff line
@@ -80,12 +80,20 @@ int module_frob_arch_sections(Elf_Ehdr *hdr,
			maps[ARM_SEC_DEVINIT].unw_sec = s;
		else if (strcmp(".ARM.exidx", secname) == 0)
			maps[ARM_SEC_CORE].unw_sec = s;
		else if (strcmp(".ARM.exidx.exit.text", secname) == 0)
			maps[ARM_SEC_EXIT].unw_sec = s;
		else if (strcmp(".ARM.exidx.devexit.text", secname) == 0)
			maps[ARM_SEC_DEVEXIT].unw_sec = s;
		else if (strcmp(".init.text", secname) == 0)
			maps[ARM_SEC_INIT].sec_text = s;
		else if (strcmp(".devinit.text", secname) == 0)
			maps[ARM_SEC_DEVINIT].sec_text = s;
		else if (strcmp(".text", secname) == 0)
			maps[ARM_SEC_CORE].sec_text = s;
		else if (strcmp(".exit.text", secname) == 0)
			maps[ARM_SEC_EXIT].sec_text = s;
		else if (strcmp(".devexit.text", secname) == 0)
			maps[ARM_SEC_DEVEXIT].sec_text = s;
	}
#endif
	return 0;