Messages in this thread Patch in this message | | | From | Catalin Marinas <> | Subject | [PATCH 2.6.18-rc4 05/10] Add kmemleak support for i386 | Date | Sat, 12 Aug 2006 23:00:27 +0100 |
| |
From: Catalin Marinas <catalin.marinas@arm.com>
This patch modifies the vmlinux.lds.S script and adds the backtrace support for i386 to be used with kmemleak.
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> ---
arch/i386/kernel/vmlinux.lds.S | 4 ++++ include/asm-i386/processor.h | 12 ++++++++++++ include/asm-i386/thread_info.h | 10 +++++++++- 3 files changed, 25 insertions(+), 1 deletions(-)
diff --git a/arch/i386/kernel/vmlinux.lds.S b/arch/i386/kernel/vmlinux.lds.S index 2d4f138..34fccf1 100644 --- a/arch/i386/kernel/vmlinux.lds.S +++ b/arch/i386/kernel/vmlinux.lds.S @@ -45,6 +45,7 @@ SECTIONS __tracedata_end = .; /* writeable */ + _sdata = .; /* Start of data section */ .data : AT(ADDR(.data) - LOAD_OFFSET) { /* Data */ *(.data) CONSTRUCTORS @@ -156,6 +157,9 @@ #endif __per_cpu_start = .; .data.percpu : AT(ADDR(.data.percpu) - LOAD_OFFSET) { *(.data.percpu) } __per_cpu_end = .; + __memleak_offsets_start = .; + .init.memleak_offsets : AT(ADDR(.init.memleak_offsets) - LOAD_OFFSET) { *(.init.memleak_offsets) } + __memleak_offsets_end = .; . = ALIGN(4096); __init_end = .; /* freed after init ends here */ diff --git a/include/asm-i386/processor.h b/include/asm-i386/processor.h index b32346d..29626e3 100644 --- a/include/asm-i386/processor.h +++ b/include/asm-i386/processor.h @@ -731,4 +731,16 @@ extern unsigned long boot_option_idle_ov extern void enable_sep_cpu(void); extern int sysenter_setup(void); +#ifdef CONFIG_FRAME_POINTER +static inline unsigned long arch_call_address(void *frame) +{ + return *(unsigned long *)(frame + 4); +} + +static inline void *arch_prev_frame(void *frame) +{ + return *(void **)frame; +} +#endif + #endif /* __ASM_I386_PROCESSOR_H */ diff --git a/include/asm-i386/thread_info.h b/include/asm-i386/thread_info.h index 54d6d7a..054553f 100644 --- a/include/asm-i386/thread_info.h +++ b/include/asm-i386/thread_info.h @@ -100,12 +100,20 @@ #define alloc_thread_info(tsk) \ struct thread_info *ret; \ \ ret = kmalloc(THREAD_SIZE, GFP_KERNEL); \ + memleak_ignore(ret); \ if (ret) \ memset(ret, 0, THREAD_SIZE); \ ret; \ }) #else -#define alloc_thread_info(tsk) kmalloc(THREAD_SIZE, GFP_KERNEL) +#define alloc_thread_info(tsk) \ + ({ \ + struct thread_info *ret; \ + \ + ret = kmalloc(THREAD_SIZE, GFP_KERNEL); \ + memleak_ignore(ret); \ + ret; \ + }) #endif #define free_thread_info(info) kfree(info) - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |