lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20090509050335.GC18129@hack>
Date:	Sat, 9 May 2009 13:03:35 +0800
From:	Américo Wang <xiyou.wangcong@...il.com>
To:	Peter Oberparleiter <oberpar@...ux.vnet.ibm.com>
Cc:	linux-kernel@...r.kernel.org,
	Andrew Morton <akpm@...ux-foundation.org>,
	Andi Kleen <andi@...stfloor.org>,
	Huang Ying <ying.huang@...el.com>, Li Wei <W.Li@....COM>,
	Michael Ellerman <michaele@....ibm.com>,
	Ingo Molnar <mingo@...e.hu>,
	Heiko Carstens <heicars2@...ux.vnet.ibm.com>,
	Martin Schwidefsky <mschwid2@...ux.vnet.ibm.com>,
	Rusty Russell <rusty@...tcorp.com.au>,
	Sam Ravnborg <sam@...nborg.org>, Jeff Dike <jdike@...toit.com>
Subject: Re: [PATCH 1/4] kernel: constructor support

On Fri, May 08, 2009 at 05:44:09PM +0200, Peter Oberparleiter wrote:
>From: Peter Oberparleiter <oberpar@...ux.vnet.ibm.com>
>
>Call constructors (gcc-generated initcall-like functions) during
>kernel start and module load. Constructors are e.g. used for gcov data
>initialization.
>
>Disable constructor support for usermode Linux to prevent conflicts
>with host glibc.
>
>Signed-off-by: Peter Oberparleiter <oberpar@...ux.vnet.ibm.com>
>Acked-by: Rusty Russell <rusty@...tcorp.com.au>
>Cc: Sam Ravnborg <sam@...nborg.org>
>Cc: Jeff Dike <jdike@...toit.com>


For UML, Acked-by: WANG Cong <xiyou.wangcong@...il.com>

A small detail below.


>---
> include/asm-generic/vmlinux.lds.h |   11 ++++++++++-
> include/linux/init.h              |    2 ++
> include/linux/module.h            |    6 ++++++
> init/Kconfig                      |    5 +++++
> init/main.c                       |   13 +++++++++++++
> kernel/module.c                   |   16 ++++++++++++++++
> 6 files changed, 52 insertions(+), 1 deletion(-)
>
>Index: linux-2.6.30-rc4/include/asm-generic/vmlinux.lds.h
>===================================================================
>--- linux-2.6.30-rc4.orig/include/asm-generic/vmlinux.lds.h
>+++ linux-2.6.30-rc4/include/asm-generic/vmlinux.lds.h
>@@ -332,6 +332,14 @@
> /* Section used for early init (in .S files) */
> #define HEAD_TEXT  *(HEAD_TEXT_SECTION)
> 
>+#ifdef CONFIG_CONSTRUCTORS
>+#define KERNEL_CTORS()	VMLINUX_SYMBOL(__ctors_start) = .; \
>+			*(.ctors)			   \
>+			VMLINUX_SYMBOL(__ctors_end) = .;
>+#else
>+#define KERNEL_CTORS()
>+#endif
>+
> /* init and exit section handling */
> #define INIT_DATA							\
> 	*(.init.data)							\
>@@ -340,7 +348,8 @@
> 	CPU_DISCARD(init.data)						\
> 	CPU_DISCARD(init.rodata)					\
> 	MEM_DISCARD(init.data)						\
>-	MEM_DISCARD(init.rodata)
>+	MEM_DISCARD(init.rodata)					\
>+	KERNEL_CTORS()
> 
> #define INIT_TEXT							\
> 	*(.init.text)							\
>Index: linux-2.6.30-rc4/include/linux/init.h
>===================================================================
>--- linux-2.6.30-rc4.orig/include/linux/init.h
>+++ linux-2.6.30-rc4/include/linux/init.h
>@@ -136,6 +136,8 @@ typedef void (*exitcall_t)(void);
> extern initcall_t __con_initcall_start[], __con_initcall_end[];
> extern initcall_t __security_initcall_start[], __security_initcall_end[];
> 
>+typedef void (*ctor_fn_t)(void);
>+
> /* Defined in init/main.c */
> extern int do_one_initcall(initcall_t fn);
> extern char __initdata boot_command_line[];
>Index: linux-2.6.30-rc4/include/linux/module.h
>===================================================================
>--- linux-2.6.30-rc4.orig/include/linux/module.h
>+++ linux-2.6.30-rc4/include/linux/module.h
>@@ -354,6 +354,12 @@ struct module
> 	local_t ref;
> #endif
> #endif
>+
>+#ifdef CONFIG_CONSTRUCTORS
>+	/* Constructor functions. */
>+	ctor_fn_t *ctors;
>+	unsigned int num_ctors;
>+#endif
> };
> #ifndef MODULE_ARCH_INIT
> #define MODULE_ARCH_INIT {}
>Index: linux-2.6.30-rc4/init/main.c
>===================================================================
>--- linux-2.6.30-rc4.orig/init/main.c
>+++ linux-2.6.30-rc4/init/main.c
>@@ -700,6 +700,18 @@ asmlinkage void __init start_kernel(void
> 	rest_init();
> }
> 
>+/* Call all constructor functions linked into the kernel. */
>+static void __init do_ctors(void)
>+{
>+#ifdef CONFIG_CONSTRUCTORS
>+	extern ctor_fn_t __ctors_start[], __ctors_end[];


I would like these to be globally decleared, since they are.


-- 
Live like a child, think like the god.
 
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ