1
linux/arch
Jeremy Fitzhardinge 35c7422649 [PATCH] x86: deflate stack usage in lib/inflate.c
inflate_fixed and huft_build together use around 2.7k of stack.  When
using 4k stacks, I saw stack overflows from interrupts arriving while
unpacking the root initrd:

do_IRQ: stack overflow: 384
 [<c0106b64>] show_trace_log_lvl+0x1a/0x30
 [<c01075e6>] show_trace+0x12/0x14
 [<c010763f>] dump_stack+0x16/0x18
 [<c0107ca4>] do_IRQ+0x6d/0xd9
 [<c010202b>] xen_evtchn_do_upcall+0x6e/0xa2
 [<c0106781>] xen_hypervisor_callback+0x25/0x2c
 [<c010116c>] xen_restore_fl+0x27/0x29
 [<c0330f63>] _spin_unlock_irqrestore+0x4a/0x50
 [<c0117aab>] change_page_attr+0x577/0x584
 [<c0117b45>] kernel_map_pages+0x8d/0xb4
 [<c016a314>] cache_alloc_refill+0x53f/0x632
 [<c016a6c2>] __kmalloc+0xc1/0x10d
 [<c0463d34>] malloc+0x10/0x12
 [<c04641c1>] huft_build+0x2a7/0x5fa
 [<c04645a5>] inflate_fixed+0x91/0x136
 [<c04657e2>] unpack_to_rootfs+0x5f2/0x8c1
 [<c0465acf>] populate_rootfs+0x1e/0xe4

(This was under Xen, but there's no reason it couldn't happen on bare
  hardware.)

This patch mallocs the local variables, thereby reducing the stack
usage to sane levels.

Also, up the heap size for the kernel decompressor to deal with the
extra allocation.

Signed-off-by: Jeremy Fitzhardinge <jeremy@xensource.com>
Signed-off-by: Andi Kleen <ak@suse.de>
Cc: Tim Yamin <plasmaroo@gentoo.org>
Cc: Andi Kleen <ak@suse.de>
Cc: Matt Mackall <mpm@selenic.com>
Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
Cc: Richard Henderson <rth@twiddle.net>
Cc: Russell King <rmk@arm.linux.org.uk>
Cc: Ian Molton <spyro@f2s.com>
2007-05-02 19:27:15 +02:00
..
alpha [PATCH] x86: deflate stack usage in lib/inflate.c 2007-05-02 19:27:15 +02:00
arm [PATCH] x86: deflate stack usage in lib/inflate.c 2007-05-02 19:27:15 +02:00
arm26 [PATCH] x86: deflate stack usage in lib/inflate.c 2007-05-02 19:27:15 +02:00
avr32 AVR32: Remove useless config option "GENERIC_BUST_SPINLOCK". 2007-04-27 13:45:26 +02:00
cris [PATCH] x86: Allow percpu variables to be page-aligned 2007-05-02 19:27:12 +02:00
frv [PATCH] x86: Allow percpu variables to be page-aligned 2007-05-02 19:27:12 +02:00
h8300 [PATCH] Declare init_irq_proc before we use it. 2007-02-19 14:21:50 -08:00
i386 [PATCH] x86: deflate stack usage in lib/inflate.c 2007-05-02 19:27:15 +02:00
ia64 [AF_RXRPC/AFS]: Arch-specific fixes. 2007-04-27 15:28:45 -07:00
m32r [PATCH] x86: Allow percpu variables to be page-aligned 2007-05-02 19:27:12 +02:00
m68k [PATCH] Declare init_irq_proc before we use it. 2007-02-19 14:21:50 -08:00
m68knommu [PATCH] m68knommu: remove local_bh_count 2007-03-06 18:08:38 -08:00
mips [PATCH] x86: Allow percpu variables to be page-aligned 2007-05-02 19:27:12 +02:00
parisc [PATCH] x86: Allow percpu variables to be page-aligned 2007-05-02 19:27:12 +02:00
powerpc [PATCH] x86: Allow percpu variables to be page-aligned 2007-05-02 19:27:12 +02:00
ppc [PATCH] x86: Allow percpu variables to be page-aligned 2007-05-02 19:27:12 +02:00
s390 [PATCH] x86: Allow percpu variables to be page-aligned 2007-05-02 19:27:12 +02:00
sh [PATCH] x86: Allow percpu variables to be page-aligned 2007-05-02 19:27:12 +02:00
sh64 [PATCH] x86: Allow percpu variables to be page-aligned 2007-05-02 19:27:12 +02:00
sparc [PATCH] x86: Allow percpu variables to be page-aligned 2007-05-02 19:27:12 +02:00
sparc64 [PATCH] x86: Allow percpu variables to be page-aligned 2007-05-02 19:27:12 +02:00
um [PATCH] i386: Add an option for the VIA C7 which sets appropriate L1 cache 2007-05-02 19:27:05 +02:00
v850 kbuild: Replace remaining "depends" with "depends on" 2007-02-17 19:05:24 +01:00
x86_64 [PATCH] x86: deflate stack usage in lib/inflate.c 2007-05-02 19:27:15 +02:00
xtensa [PATCH] x86: Allow percpu variables to be page-aligned 2007-05-02 19:27:12 +02:00