All of lore.kernel.org
 help / color / mirror / Atom feed
From: Matt Mackall <mpm@selenic.com>
To: Andrew Morton <akpm@osdl.org>, linux-kernel@vger.kernel.org
Subject: [PATCH 11/15] misc: Allow dropping panic text strings from kernel image
Date: Fri, 11 Nov 2005 02:35:54 -0600	[thread overview]
Message-ID: <12.282480653@selenic.com> (raw)
In-Reply-To: <11.282480653@selenic.com>

Configurable support for panic strings

This drops panic message strings from the kernel image while
maintaining normal panic functionality.

$ size vmlinux vmlinux-baseline
   text    data     bss     dec     hex filename
3330172  529036  190556 4049764  3dcb64 vmlinux-baseline
3326488  529036  189532 4045056  3db900 vmlinux

Signed-off-by: Matt Mackall <mpm@selenic.com>

Index: 2.6.14-misc/include/linux/kernel.h
===================================================================
--- 2.6.14-misc.orig/include/linux/kernel.h	2005-11-09 11:27:15.000000000 -0800
+++ 2.6.14-misc/include/linux/kernel.h	2005-11-10 23:26:41.000000000 -0800
@@ -87,8 +87,13 @@ extern int cond_resched(void);
 
 extern struct notifier_block *panic_notifier_list;
 extern long (*panic_blink)(long time);
+#ifdef CONFIG_FULL_PANIC
 NORET_TYPE void panic(const char * fmt, ...)
 	__attribute__ ((NORET_AND format (printf, 1, 2)));
+#else
+#define panic(fmt, ...) tiny_panic(0, ## __VA_ARGS__)
+NORET_TYPE void tiny_panic(int a, ...) ATTRIB_NORET;
+#endif
 fastcall NORET_TYPE void do_exit(long error_code)
 	ATTRIB_NORET;
 NORET_TYPE void complete_and_exit(struct completion *, long)
Index: 2.6.14-misc/init/Kconfig
===================================================================
--- 2.6.14-misc.orig/init/Kconfig	2005-11-09 11:27:15.000000000 -0800
+++ 2.6.14-misc/init/Kconfig	2005-11-10 23:26:41.000000000 -0800
@@ -324,6 +324,14 @@ config DOUBLEFAULT
           would otherwise cause a system to silently reboot. Disabling this
           option saves about 4k.
 
+config FULL_PANIC
+	default y
+	bool "Full panic reporting data" if EMBEDDED
+	help
+	  This includes text descriptions of panics in addition to stack dumps.
+          Disabling compiles out the explanations for panics, saving
+	  string space. Use with caution.
+
 config BASE_FULL
 	default y
 	bool "Enable full-sized data structures for core" if EMBEDDED
Index: 2.6.14-misc/kernel/panic.c
===================================================================
--- 2.6.14-misc.orig/kernel/panic.c	2005-11-09 11:27:15.000000000 -0800
+++ 2.6.14-misc/kernel/panic.c	2005-11-10 23:26:41.000000000 -0800
@@ -54,12 +54,18 @@ EXPORT_SYMBOL(panic_blink);
  *
  *	This function never returns.
  */
- 
+
+#ifdef CONFIG_FULL_PANIC
 NORET_TYPE void panic(const char * fmt, ...)
 {
-	long i;
 	static char buf[1024];
 	va_list args;
+#else
+NORET_TYPE void tiny_panic(int a, ...)
+{
+#endif
+	long i;
+
 #if defined(CONFIG_ARCH_S390)
         unsigned long caller = (unsigned long) __builtin_return_address(0);
 #endif
@@ -72,10 +78,16 @@ NORET_TYPE void panic(const char * fmt, 
 	preempt_disable();
 
 	bust_spinlocks(1);
+
+#ifdef CONFIG_FULL_PANIC
 	va_start(args, fmt);
 	vsnprintf(buf, sizeof(buf), fmt, args);
 	va_end(args);
 	printk(KERN_EMERG "Kernel panic - not syncing: %s\n",buf);
+#else
+	printk(KERN_EMERG "Kernel panic - not syncing\n");
+#endif
+
 	bust_spinlocks(0);
 
 	/*
@@ -94,7 +106,11 @@ NORET_TYPE void panic(const char * fmt, 
 	smp_send_stop();
 #endif
 
+#ifdef CONFIG_FULL_PANIC
 	notifier_call_chain(&panic_notifier_list, 0, buf);
+#else
+	notifier_call_chain(&panic_notifier_list, 0, "");
+#endif
 
 	if (!panic_blink)
 		panic_blink = no_blink;
@@ -136,7 +152,11 @@ NORET_TYPE void panic(const char * fmt, 
 	}
 }
 
+#ifdef CONFIG_FULL_PANIC
 EXPORT_SYMBOL(panic);
+#else
+EXPORT_SYMBOL(tiny_panic);
+#endif
 
 /**
  *	print_tainted - return a string to represent the kernel taint state.

  reply	other threads:[~2005-11-11  8:39 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-11-11  8:35 [PATCH 0/15] misc: Miscellaneous bits from -tiny Matt Mackall
2005-11-11  8:35 ` [PATCH 1/15] misc: Add bloat-o-meter to scripts Matt Mackall
2005-11-11  8:35   ` [PATCH 2/15] misc: Uninline some namei.c functions Matt Mackall
2005-11-11  8:35     ` [PATCH 3/15] misc: Uninline some open.c functions Matt Mackall
2005-11-11  8:35       ` [PATCH 4/15] misc: Uninline some inode.c functions Matt Mackall
2005-11-11  8:35         ` [PATCH 5/15] misc: Uninline some fslocks.c functions Matt Mackall
2005-11-11  8:35           ` [PATCH 6/15] misc: Trim non-IPX builds Matt Mackall
2005-11-11  8:35             ` [PATCH 7/15] misc: Make x86 doublefault handling optional Matt Mackall
2005-11-11  8:35               ` [PATCH 8/15] misc: Make vm86 support optional Matt Mackall
2005-11-11  8:35                 ` [PATCH 9/15] misc: Make sysenter " Matt Mackall
2005-11-11  8:35                   ` [PATCH 10/15] misc: Make *[ug]id16 " Matt Mackall
2005-11-11  8:35                     ` Matt Mackall [this message]
2005-11-11  8:35                       ` [PATCH 12/15] misc: Configurable panic support Matt Mackall
2005-11-11  8:35                         ` [PATCH 13/15] misc: Configure ELF core dump support Matt Mackall
2005-11-11  8:35                           ` [PATCH 14/15] misc: Configurable number of supported IDE interfaces Matt Mackall
2005-11-11  8:35                             ` [PATCH 15/15] misc: Configurable support for PCI serial ports Matt Mackall
2005-11-11 11:03                               ` Geert Uytterhoeven
2006-01-07 16:50                               ` Russell King
2006-01-08  2:26                                 ` Matt Mackall
2005-11-11 10:14                             ` [PATCH 14/15] misc: Configurable number of supported IDE interfaces Bartlomiej Zolnierkiewicz
2005-11-11 17:18                               ` Matt Mackall
2005-11-11 17:34                                 ` Roman Zippel
2005-11-11 17:37                                   ` Matt Mackall
2005-11-11 17:47                                     ` Matt Mackall
2005-11-11 17:49                                     ` Roman Zippel
2005-11-11 11:03                       ` [PATCH 11/15] misc: Allow dropping panic text strings from kernel image Geert Uytterhoeven
2005-11-11 17:21                         ` Matt Mackall
2005-11-12  6:06                       ` Andrew Morton
2005-11-11 10:22                     ` [PATCH 10/15] misc: Make *[ug]id16 support optional Geert Uytterhoeven
2005-11-16 13:21                     ` Rob Landley
2005-11-16 18:01                       ` Matt Mackall
2005-12-20 15:46                         ` Zdenek Pavlas
2005-12-20 16:50                           ` Rob Landley
2005-12-21 17:30                             ` Zdenek Pavlas
2005-11-12  5:57                   ` [PATCH 9/15] misc: Make sysenter " Andrew Morton
2005-11-12  5:55                 ` [PATCH 8/15] misc: Make vm86 " Andrew Morton
2005-11-13  3:30               ` [PATCH 7/15] misc: Make x86 doublefault handling optional Andi Kleen
2005-11-16 13:13               ` Rob Landley
2005-11-16 18:21                 ` Matt Mackall
2005-11-16 19:21                   ` Scott Garfinkle
2005-11-16 19:45                     ` Adrian Bunk
2005-12-12 10:36                     ` Ingo Molnar
2005-12-12 16:22                       ` Andi Kleen
2005-12-12 15:32                         ` Matt Mackall
2005-12-13  8:39                         ` Ingo Molnar
2005-11-14  1:57             ` [PATCH 6/15] misc: Trim non-IPX builds Adrian Bunk
2005-11-18  5:22               ` [2.6 patch] move some code to net/ipx/af_ipx.c Adrian Bunk
2005-11-18 17:27                 ` Matt Mackall
2005-11-18 20:24                 ` Arnaldo Carvalho de Melo
2005-12-05 21:35                   ` Adrian Bunk

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=12.282480653@selenic.com \
    --to=mpm@selenic.com \
    --cc=akpm@osdl.org \
    --cc=linux-kernel@vger.kernel.org \
    /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.