1
linux/arch/arm
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
..
boot [PATCH] x86: deflate stack usage in lib/inflate.c 2007-05-02 19:27:15 +02:00
common power management: implement pm_ops.valid for everybody 2007-04-30 16:40:40 -07:00
configs [ARM] 4313/1: S3C24XX: Update s3c2410 defconfig to 2.6.21-rc6 2007-04-16 21:03:00 +01:00
kernel [PATCH] x86: Allow percpu variables to be page-aligned 2007-05-02 19:27:12 +02:00
lib
mach-aaec2000 [ARM] Remove compatibility layer for ARM irqs 2006-11-30 12:24:47 +00:00
mach-at91 rework pm_ops pm_disk_mode, kill misuse 2007-04-30 16:40:40 -07:00
mach-clps711x [ARM] Remove compatibility layer for ARM irqs 2006-11-30 12:24:47 +00:00
mach-clps7500 [ARM] Remove compatibility layer for ARM irqs 2006-11-30 12:24:47 +00:00
mach-ebsa110 [ARM] Remove compatibility layer for ARM irqs 2006-11-30 12:24:47 +00:00
mach-ep93xx [ARM] 4142/1: ep93xx: handle IRQT_NOEDGE 2007-02-08 14:56:06 +00:00
mach-footbridge [ARM] Remove compatibility layer for ARM irqs 2006-11-30 12:24:47 +00:00
mach-h720x [ARM] Remove compatibility layer for ARM irqs 2006-11-30 12:24:47 +00:00
mach-imx [ARM] 4255/1: i.MX/MX1 Correct MPU PLL reference clock value. 2007-03-12 16:49:35 +00:00
mach-integrator [ARM] Remove compatibility layer for ARM irqs 2006-11-30 12:24:47 +00:00
mach-iop13xx Merge ARM fixes 2007-02-20 19:13:30 +00:00
mach-iop32x [ARM] 4271/1: iop32x: fix ep80219 detection (support iq80219 platforms) 2007-03-17 22:33:26 +00:00
mach-iop33x [ARM] 4187/1: iop: unify time implementation across iop32x, iop33x, and iop13xx 2007-02-17 15:05:40 +00:00
mach-ixp4xx Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm 2007-02-19 13:18:39 -08:00
mach-ixp23xx [ARM] 3994/1: ixp23xx: fix handling of pci master aborts 2006-12-07 16:16:19 +00:00
mach-ixp2000 [ARM] 3965/1: ixp2000: fix handling of pci master aborts 2006-12-01 16:55:22 +00:00
mach-l7200 [ARM] Remove compatibility layer for ARM irqs 2006-11-30 12:24:47 +00:00
mach-lh7a40x Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm 2006-12-07 15:40:39 -08:00
mach-netx [PATCH] clocksource: fixup is_continous changes on ARM 2007-02-16 08:13:57 -08:00
mach-ns9xxx [ARM] 4247/1: Fix long name for cc9p9360dev 2007-03-08 13:33:56 +00:00
mach-omap1 power management: implement pm_ops.valid for everybody 2007-04-30 16:40:40 -07:00
mach-omap2 power management: implement pm_ops.valid for everybody 2007-04-30 16:40:40 -07:00
mach-pnx4008 power management: implement pm_ops.valid for everybody 2007-04-30 16:40:40 -07:00
mach-pxa power management: implement pm_ops.valid for everybody 2007-04-30 16:40:40 -07:00
mach-realview [ARM] 4201/1: SMP barriers pair needed for the secondary boot process 2007-02-16 13:06:56 +00:00
mach-rpc [ARM] Remove compatibility layer for ARM irqs 2006-11-30 12:24:47 +00:00
mach-s3c2400 [ARM] 4157/2: S3C24XX: move arch/arch/mach-s3c2410 into cpu components 2007-02-11 17:36:09 +00:00
mach-s3c2410 [ARM] 4272/1: Missing symbol h1940_pm_return fix 2007-03-20 22:42:39 +00:00
mach-s3c2412 [ARM] 4220/1: S3C24XX: DMA system initialised from sysdev 2007-02-17 15:00:34 +00:00
mach-s3c2440 [ARM] 4272/1: Missing symbol h1940_pm_return fix 2007-03-20 22:42:39 +00:00
mach-s3c2442 [ARM] 4157/2: S3C24XX: move arch/arch/mach-s3c2410 into cpu components 2007-02-11 17:36:09 +00:00
mach-s3c2443 [ARM] 4270/2: mach-s3c2443/irq.c off by one error in dma irqs 2007-03-17 22:30:28 +00:00
mach-sa1100 power management: implement pm_ops.valid for everybody 2007-04-30 16:40:40 -07:00
mach-shark [ARM] Remove compatibility layer for ARM irqs 2006-11-30 12:24:47 +00:00
mach-versatile i2c: New ARM Versatile/Realview bus driver 2006-12-10 21:21:32 +01:00
mm Merge git://git.kernel.org/pub/scm/linux/kernel/git/bunk/trivial 2007-02-19 13:29:02 -08:00
nwfpe
oprofile [ARM] 4237/2: oprofile: Always allow backtraces on ARM 2007-03-02 11:58:58 +00:00
plat-iop [ARM] 4187/1: iop: unify time implementation across iop32x, iop33x, and iop13xx 2007-02-17 15:05:40 +00:00
plat-omap ARM: OMAP: Use linux/delay.h not asm/delay.h 2007-03-02 01:47:13 -08:00
plat-s3c24xx power management: implement pm_ops.valid for everybody 2007-04-30 16:40:40 -07:00
tools [ARM] Update mach-types 2007-04-16 21:01:56 +01:00
vfp [ARM] 4111/1: Allow VFP to work with thread migration on SMP 2007-01-25 16:35:29 +00:00
Kconfig [PATCH] add CONFIG_GENERIC_GPIO 2007-03-05 07:57:51 -08:00
Kconfig-nommu [ARM] nommu: manage the CP15 things 2006-09-27 17:34:30 +01:00
Kconfig.debug [ARM] Remove DEBUG_WAITQ 2006-11-30 12:24:47 +00:00
Makefile [ARM] fix mach-at91 build breakage 2007-02-20 15:28:40 +00:00