android_kernel_xiaomi_sm8350/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
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
m68knommu
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
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