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
mach-at91 rework pm_ops pm_disk_mode, kill misuse 2007-04-30 16:40:40 -07:00
mach-clps711x
mach-clps7500
mach-ebsa110
mach-ep93xx [ARM] 4142/1: ep93xx: handle IRQT_NOEDGE 2007-02-08 14:56:06 +00:00
mach-footbridge
mach-h720x
mach-imx [ARM] 4255/1: i.MX/MX1 Correct MPU PLL reference clock value. 2007-03-12 16:49:35 +00:00
mach-integrator
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
mach-ixp2000
mach-l7200
mach-lh7a40x
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
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
mach-versatile
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
Kconfig [PATCH] add CONFIG_GENERIC_GPIO 2007-03-05 07:57:51 -08:00
Kconfig-nommu
Kconfig.debug
Makefile [ARM] fix mach-at91 build breakage 2007-02-20 15:28:40 +00:00