All of lore.kernel.org
 help / color / mirror / Atom feed
From: Cyrill Gorcunov <gorcunov@gmail.com>
To: Ingo Molnar <mingo@elte.hu>, "H. Peter Anvin" <hpa@zytor.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Sam Ravnborg <sam@ravnborg.org>
Cc: Harvey Harrison <harvey.harrison@gmail.com>,
	LKML <linux-kernel@vger.kernel.org>,
	Jaswinder Singh Rajput <jaswinderlinux@gmail.com>
Subject: [PATCH -tip] x86: headers - fix export private data to userspace
Date: Tue, 13 Jan 2009 21:34:56 +0300	[thread overview]
Message-ID: <20090113183456.GA14470@localhost> (raw)

Impact: cleanup

'make headers_check' warn us about leaking of kernel private
(mostly compile time vars) data to userspace in headers. Fix it.

More detailed report for easier reviewing:

1) boot.h - neither BOOT_HEAP_SIZE, BOOT_STACK_SIZE refs
   was found by searching thru net (ie in user-space area).

2) prctl.h - sys_arch_prctl is completely removed from
   header since frankly I don't even understand why we
   describe it here. It is described like
    __SYSCALL(__NR_arch_prctl, sys_arch_prctl) in unistd_64.h
   and implemented in process_64.c. User-mode linux involved?
   So this one in fact is suspicious.

3) ptrace-abi.h - ptrace_bts_config struct is wrapped
   by __KERNEL__ -- not sure if it was ever proposed for
   userland.

4) setup.h - COMMAND_LINE_SIZE saved for userspace, bootloaders
   could use it.

5) sigcontext32.h - we really need linux/types.h here
   since we use __u... types.

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
---

I should probably write "Impact: break the kernel" :)

It requires _STRONG_ review, randconfig and so on. It's
really fragile -- having NAK on response will be fine.

 arch/x86/include/asm/boot.h         |   10 +++++++---
 arch/x86/include/asm/prctl.h        |    4 ----
 arch/x86/include/asm/ptrace-abi.h   |    4 +++-
 arch/x86/include/asm/setup.h        |    4 ++--
 arch/x86/include/asm/sigcontext32.h |    2 ++
 5 files changed, 14 insertions(+), 10 deletions(-)

Index: linux-2.6.git/arch/x86/include/asm/boot.h
===================================================================
--- linux-2.6.git.orig/arch/x86/include/asm/boot.h
+++ linux-2.6.git/arch/x86/include/asm/boot.h
@@ -10,14 +10,16 @@
 #define EXTENDED_VGA	0xfffe		/* 80x50 mode */
 #define ASK_VGA		0xfffd		/* ask for it at bootup */
 
+#ifdef __KERNEL__
+
 /* Physical address where kernel should be loaded. */
 #define LOAD_PHYSICAL_ADDR ((CONFIG_PHYSICAL_START \
 				+ (CONFIG_PHYSICAL_ALIGN - 1)) \
 				& ~(CONFIG_PHYSICAL_ALIGN - 1))
 
-#if (defined CONFIG_KERNEL_BZIP2)
+#ifdef CONFIG_KERNEL_BZIP2
 #define BOOT_HEAP_SIZE             0x400000
-#else
+#else /* !CONFIG_KERNEL_BZIP2 */
 
 #ifdef CONFIG_X86_64
 #define BOOT_HEAP_SIZE	0x7000
@@ -25,7 +27,7 @@
 #define BOOT_HEAP_SIZE	0x4000
 #endif
 
-#endif
+#endif /* !CONFIG_KERNEL_BZIP2 */
 
 #ifdef CONFIG_X86_64
 #define BOOT_STACK_SIZE	0x4000
@@ -33,4 +35,6 @@
 #define BOOT_STACK_SIZE	0x1000
 #endif
 
+#endif /* __KERNEL__ */
+
 #endif /* _ASM_X86_BOOT_H */
Index: linux-2.6.git/arch/x86/include/asm/prctl.h
===================================================================
--- linux-2.6.git.orig/arch/x86/include/asm/prctl.h
+++ linux-2.6.git/arch/x86/include/asm/prctl.h
@@ -6,8 +6,4 @@
 #define ARCH_GET_FS 0x1003
 #define ARCH_GET_GS 0x1004
 
-#ifdef CONFIG_X86_64
-extern long sys_arch_prctl(int, unsigned long);
-#endif /* CONFIG_X86_64 */
-
 #endif /* _ASM_X86_PRCTL_H */
Index: linux-2.6.git/arch/x86/include/asm/ptrace-abi.h
===================================================================
--- linux-2.6.git.orig/arch/x86/include/asm/ptrace-abi.h
+++ linux-2.6.git/arch/x86/include/asm/ptrace-abi.h
@@ -50,7 +50,7 @@
 #define RSP 152
 #define SS 160
 #define ARGOFFSET R11
-#endif /* __ASSEMBLY__ */
+#endif /* __ASSEMBLY__ || __FRAME_OFFSETS */
 
 /* top of stack page */
 #define FRAME_SIZE 168
@@ -80,6 +80,7 @@
 
 #define PTRACE_SINGLEBLOCK	33	/* resume execution until next branch */
 
+#ifdef __KERNEL__
 #ifdef CONFIG_X86_PTRACE_BTS
 
 #ifndef __ASSEMBLY__
@@ -141,5 +142,6 @@ struct ptrace_bts_config {
    Returns number of BTS records drained.
 */
 #endif /* CONFIG_X86_PTRACE_BTS */
+#endif /* __KERNEL__ */
 
 #endif /* _ASM_X86_PTRACE_ABI_H */
Index: linux-2.6.git/arch/x86/include/asm/setup.h
===================================================================
--- linux-2.6.git.orig/arch/x86/include/asm/setup.h
+++ linux-2.6.git/arch/x86/include/asm/setup.h
@@ -3,6 +3,8 @@
 
 #define COMMAND_LINE_SIZE 2048
 
+#ifdef __KERNEL__
+
 #ifndef __ASSEMBLY__
 
 /* Interrupt control for vSMPowered x86_64 systems */
@@ -56,8 +58,6 @@ extern unsigned long saved_video_mode;
 #endif
 #endif /* __ASSEMBLY__ */
 
-#ifdef __KERNEL__
-
 #ifdef __i386__
 
 #include <linux/pfn.h>
Index: linux-2.6.git/arch/x86/include/asm/sigcontext32.h
===================================================================
--- linux-2.6.git.orig/arch/x86/include/asm/sigcontext32.h
+++ linux-2.6.git/arch/x86/include/asm/sigcontext32.h
@@ -1,6 +1,8 @@
 #ifndef _ASM_X86_SIGCONTEXT32_H
 #define _ASM_X86_SIGCONTEXT32_H
 
+#include <linux/types.h>
+
 /* signal context for 32bit programs. */
 
 #define X86_FXSR_MAGIC		0x0000

             reply	other threads:[~2009-01-13 18:35 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-01-13 18:34 Cyrill Gorcunov [this message]
2009-01-13 18:37 ` [PATCH -tip] x86: headers - fix export private data to userspace Harvey Harrison
2009-01-13 18:49   ` H. Peter Anvin
2009-01-13 18:52     ` Cyrill Gorcunov
2009-01-13 18:55       ` H. Peter Anvin
2009-01-13 19:00         ` Cyrill Gorcunov
2009-01-13 19:03           ` H. Peter Anvin
2009-01-13 19:12             ` Cyrill Gorcunov
2009-01-13 19:05     ` Harvey Harrison
2009-01-13 18:50   ` Cyrill Gorcunov
2009-01-13 18:54     ` H. Peter Anvin
2009-01-13 18:56       ` Cyrill Gorcunov
2009-01-14 19:42 ` H. Peter Anvin
2009-01-14 19:49   ` Cyrill Gorcunov
2009-01-14 20:05     ` Cyrill Gorcunov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20090113183456.GA14470@localhost \
    --to=gorcunov@gmail.com \
    --cc=harvey.harrison@gmail.com \
    --cc=hpa@zytor.com \
    --cc=jaswinderlinux@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=sam@ravnborg.org \
    --cc=tglx@linutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.