| From stable-bounces@linux.kernel.org Tue Aug 5 13:14:58 2008 |
| From: Jeff Dike <jdike@addtoit.com> |
| Date: Tue, 5 Aug 2008 16:14:10 -0400 |
| Subject: uml: Fix boot crash |
| To: stable@kernel.org |
| Cc: LKML <linux-kernel@vger.kernel.org>, uml-devel <user-mode-linux-devel@lists.sourceforge.net> |
| Message-ID: <20080805201410.GA11796@c2.user-mode-linux.org> |
| Content-Disposition: inline |
| |
| From: Jeff Dike <jdike@addtoit.com> |
| |
| commit 7c1fed03b9fa32d4323d5caa6a9c7dcdd7eba767 upstream |
| |
| My copying of linux/init.h didn't go far enough. The definition of |
| __used singled out gcc minor version 3, but didn't care what the major |
| version was. This broke when unit-at-a-time was added and gcc started |
| throwing out initcalls. |
| |
| This results in an early boot crash when ptrace tries to initialize a |
| process with an empty, uninitialized register set. |
| |
| Signed-off-by: Jeff Dike <jdike@linux.intel.com> |
| Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| arch/um/include/init.h | 8 ++++++++ |
| 1 file changed, 8 insertions(+) |
| |
| --- a/arch/um/include/init.h |
| +++ b/arch/um/include/init.h |
| @@ -45,6 +45,8 @@ typedef void (*exitcall_t)(void); |
| # define __section(S) __attribute__ ((__section__(#S))) |
| #endif |
| |
| +#if __GNUC__ == 3 |
| + |
| #if __GNUC_MINOR__ >= 3 |
| # define __used __attribute__((__used__)) |
| #else |
| @@ -52,6 +54,12 @@ typedef void (*exitcall_t)(void); |
| #endif |
| |
| #else |
| +#if __GNUC__ == 4 |
| +# define __used __attribute__((__used__)) |
| +#endif |
| +#endif |
| + |
| +#else |
| #include <linux/compiler.h> |
| #endif |
| /* These are for everybody (although not all archs will actually |