From: Blaisorblade sys_get_thread_area does not memset to 0 its struct user_desc info before copying it to user space... since sizeof(struct user_desc) is 16 while the actual datas which are filled are only 12 bytes + 9 bits (across the bitfields), there is a (small) information leak. Signed-off-by: Paolo 'Blaisorblade' Giarrusso Signed-off-by: Andrew Morton --- arch/i386/kernel/process.c | 2 ++ 1 files changed, 2 insertions(+) diff -puN arch/i386/kernel/process.c~sys_get_thread_area-does-not-clear-the-returned-argument arch/i386/kernel/process.c --- devel/arch/i386/kernel/process.c~sys_get_thread_area-does-not-clear-the-returned-argument 2005-07-25 22:59:37.000000000 -0700 +++ devel-akpm/arch/i386/kernel/process.c 2005-07-25 22:59:37.000000000 -0700 @@ -917,6 +917,8 @@ asmlinkage int sys_get_thread_area(struc if (idx < GDT_ENTRY_TLS_MIN || idx > GDT_ENTRY_TLS_MAX) return -EINVAL; + memset(&info, 0, sizeof(info)); + desc = current->thread.tls_array + idx - GDT_ENTRY_TLS_MIN; info.entry_number = idx; _