linux/arch/x86_64/boot
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
..
compressed [PATCH] x86: deflate stack usage in lib/inflate.c 2007-05-02 19:27:15 +02:00
tools [PATCH] x86_64: x86_64-enable-large-bzImage.patch 2006-06-26 10:48:15 -07:00
.gitignore gitignore: x86_64 files 2006-01-01 22:21:50 +01:00
bootsect.S [PATCH] CodingStyle: trivial whitespace fixups 2005-05-05 16:36:49 -07:00
install.sh kbuild: drop vmlinux dependency from "make install" 2006-01-09 20:36:48 +01:00
Makefile [PATCH] i386/x86-64: Fix isoimage when syslinux is in /usr/share 2006-06-26 10:48:19 -07:00
mtools.conf.in Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
setup.S [PATCH] x86: add command line length to boot protocol 2007-05-02 19:27:10 +02:00
video.S [PATCH] x86-64: adjust EDID retrieval 2007-05-02 19:27:11 +02:00