Linus Torvalds
ffb4ba76a2
[module] Don't let gcc inline load_module()
...
'load_module()' is a complex function that contains all the ELF section
logic, and inlining it is utterly insane. But gcc will do it, simply
because there is only one call-site. As a result, all the stack space
that is allocated for all the work to load the module will still be
active when we actually call the module init sequence, and the deep call
chain makes stack overflows happen.
And stack overflows are really hard to debug, because they not only
corrupt random pages below the stack, but also corrupt the thread_info
structure that is allocated under the stack.
In this case, Alan Brunelle reported some crazy oopses at bootup, after
loading the processor module that ends up doing complex ACPI stuff and
has quite a deep callchain. This should fix it, and is the sane thing
to do regardless.
Cc: Alan D. Brunelle <Alan.Brunelle@hp.com>
Cc: Arjan van de Ven <arjan@linux.intel.com>
Cc: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2008-08-25 11:10:26 -07:00
..
irq
genirq: switch /proc/irq/*/smp_affinity et al to seqfiles
2008-08-12 16:07:30 -07:00
power
removed unused #include <linux/version.h>'s
2008-08-23 12:14:12 -07:00
time
nohz: fix wrong event handler after online an offlined cpu
2008-08-21 09:54:06 +02:00
trace
Merge branch 'linus' into cpus4096
2008-07-28 23:32:00 +02:00
.gitignore
acct.c
bsdacct: fix and add comments around acct_process()
2008-07-25 10:53:47 -07:00
audit.c
[PATCH] Fix the bug of using AUDIT_STATUS_RATE_LIMIT when set fail, no error output.
2008-08-01 12:15:16 -04:00
audit.h
audit_tree.c
auditfilter.c
Re: [PATCH] the loginuid field should be output in all AUDIT_CONFIG_CHANGE audit messages
2008-08-01 12:15:03 -04:00
auditsc.c
Re: [PATCH] Fix the kernel panic of audit_filter_task when key field is set
2008-08-04 06:13:50 -04:00
backtracetest.c
backtrace: replace timer with tasklet + completions
2008-06-27 18:09:16 +02:00
bounds.c
capability.c
security: Fix setting of PF_SUPERPRIV by __capable()
2008-08-14 22:59:43 +10:00
cgroup.c
cgroup: uninline cgroup_has_css_refs()
2008-07-30 09:41:44 -07:00
cgroup_debug.c
compat.c
configs.c
cpu.c
cpu hotplug: s390 doesn't support additional_cpus anymore.
2008-08-12 16:07:28 -07:00
cpuset.c
cpuset: clean up cpuset hierarchy traversal code
2008-07-30 09:41:44 -07:00
delayacct.c
per-task-delay-accounting: update taskstats for memory reclaim delay
2008-07-25 10:53:47 -07:00
dma-coherent.c
DMA: make dma-coherent.c documentation kdoc-friendly
2008-08-07 06:52:01 -07:00
dma.c
exec_domain.c
[PATCH] kill altroot
2008-07-26 20:53:20 -04:00
exit.c
tracehook: fix exit_signal=0 case
2008-08-01 12:01:11 -07:00
extable.c
fork.c
mmu-notifiers: core
2008-07-28 16:30:21 -07:00
futex.c
futexes: fix fault handling in futex_lock_pi
2008-06-23 13:31:15 +02:00
futex_compat.c
hrtimer.c
Merge branch 'generic-ipi' into generic-ipi-for-linus
2008-07-15 21:55:59 +02:00
itimer.c
kallsyms.c
kallsyms: fix potential overflow in binary search
2008-07-25 10:53:27 -07:00
Kconfig.hz
sched: fix SCHED_HRTICK dependency
2008-07-28 14:37:38 +02:00
Kconfig.preempt
kexec.c
kexec: use a mutex for locking rather than xchg()
2008-08-15 08:35:43 -07:00
kfifo.c
kgdb.c
kgdb: fix gdb serial thread queries
2008-08-01 08:39:35 -05:00
kmod.c
call_usermodehelper(): increase reliability
2008-07-25 10:53:28 -07:00
kprobes.c
kprobes: remove redundant config check
2008-07-25 10:53:30 -07:00
ksysfs.c
kthread.c
tracehook: wait_task_inactive
2008-07-26 12:00:09 -07:00
latencytop.c
lockdep.c
lockdep: fix spurious 'inconsistent lock state' warning
2008-08-18 09:42:31 +02:00
lockdep_internals.h
lockdep: build fix
2008-08-13 12:55:10 +02:00
lockdep_proc.c
lockdep: fix build if CONFIG_PROVE_LOCKING not defined
2008-08-15 19:22:04 +02:00
Makefile
Merge branch 'linus' into core/generic-dma-coherent
2008-07-29 00:07:55 +02:00
marker.c
markers: fix markers read barrier for multiple probes
2008-07-30 09:41:45 -07:00
module.c
[module] Don't let gcc inline load_module()
2008-08-25 11:10:26 -07:00
mutex-debug.c
mutex-debug.h
mutex.c
locking: fix mutex @key parameter kernel-doc notation
2008-07-28 18:12:36 +02:00
mutex.h
notifier.c
ns_cgroup.c
cgroup_clone: use pid of newly created task for new cgroup
2008-07-25 10:53:37 -07:00
nsproxy.c
removed unused #include <linux/version.h>'s
2008-08-23 12:14:12 -07:00
panic.c
Add a WARN() macro; this is WARN_ON() + printk arguments
2008-07-25 10:53:29 -07:00
params.c
pid.c
pidns: remove now unused find_pid function.
2008-07-25 10:53:45 -07:00
pid_namespace.c
bsdacct: switch from global bsd_acct_struct instance to per-pidns one
2008-07-25 10:53:47 -07:00
pm_qos_params.c
pm_qos: spelling fixes
2008-08-05 14:33:50 -07:00
posix-cpu-timers.c
posix-timers: print RT watchdog message
2008-05-24 18:49:22 +02:00
posix-timers.c
Merge branch 'timers-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
2008-08-11 16:46:11 -07:00
printk.c
printk: fix comment for printk ratelimiting
2008-07-30 09:41:45 -07:00
profile.c
build kernel/profile.o only when requested
2008-07-25 10:53:27 -07:00
ptrace.c
security: Fix setting of PF_SUPERPRIV by __capable()
2008-08-14 22:59:43 +10:00
rcuclassic.c
stop_machine: Wean existing callers off stop_machine_run()
2008-07-28 12:16:31 +10:00
rcupdate.c
rcu: fix synchronize_rcu() so that kernel-doc works
2008-08-21 09:31:44 +02:00
rcupreempt.c
Merge branch 'linus' into cpus4096
2008-07-16 00:29:07 +02:00
rcupreempt_trace.c
rcutorture.c
rcu: make rcutorture even more vicious: invoke RCU readers from irq handlers (timers)
2008-06-26 09:24:33 +02:00
relay.c
relay: fix "full buffer with exactly full last subbuffer" accounting problem
2008-08-05 14:33:46 -07:00
res_counter.c
cgroup files: convert res_counter_write() to be a cgroups write_string() handler
2008-07-25 10:53:36 -07:00
resource.c
resource: add resource_size()
2008-07-30 09:41:43 -07:00
rtmutex-debug.c
rtmutex-debug.h
rtmutex-tester.c
sysdev: Pass the attribute to the low level sysdev show/store function
2008-07-21 21:55:02 -07:00
rtmutex.c
rtmutex.h
rtmutex_common.h
rwsem.c
sched.c
Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
2008-08-16 17:15:32 -07:00
sched_clock.c
sched_clock: delay using sched_clock()
2008-08-11 08:59:03 +02:00
sched_cpupri.c
sched: use a 2-d bitmap for searching lowest-pri CPU
2008-06-06 15:19:28 +02:00
sched_cpupri.h
sched: fix the cpuprio count really
2008-06-06 15:19:44 +02:00
sched_debug.c
sched: add full schedstats to /proc/sched_debug
2008-06-27 14:31:31 +02:00
sched_fair.c
sched: fix mysql+oltp regression
2008-08-11 14:49:29 +02:00
sched_features.h
sched: enable LB_BIAS by default
2008-08-21 08:18:02 +02:00
sched_idletask.c
sched_rt.c
sched: fix rt-bandwidth hotplug race
2008-08-14 15:50:58 +02:00
sched_stats.h
sched: fix accounting in task delay accounting & migration
2008-07-04 12:50:23 +02:00
seccomp.c
semaphore.c
semaphore: __down_common: use signal_pending_state()
2008-08-05 14:33:47 -07:00
signal.c
tracehook: fix SA_NOCLDWAIT
2008-08-19 20:37:07 -07:00
smp.c
generic-ipi: fix stack and rcu interaction bug in smp_call_function_mask(), fix
2008-08-12 11:21:27 +02:00
softirq.c
Full conversion to early_initcall() interface, remove old interface
2008-07-26 12:00:04 -07:00
softlockup.c
Full conversion to early_initcall() interface, remove old interface
2008-07-26 12:00:04 -07:00
spinlock.c
lockdep: spin_lock_nest_lock(), checkpatch fixes
2008-08-13 13:56:51 +02:00
srcu.c
stacktrace.c
stacktrace: fix modular build, export print_stack_trace and save_stack_trace
2008-06-30 09:20:55 +02:00
stop_machine.c
stop_machine: remove unused variable
2008-08-12 17:52:55 +10:00
sys.c
fix setpriority(PRIO_PGRP) thread iterator breakage
2008-08-20 15:40:32 -07:00
sys_ni.c
signalfd: fix undefined reference to `compat_sys_signalfd4' when !CONFIG_SIGNALFD
2008-07-25 11:35:41 -07:00
sysctl.c
lost sysctl fix
2008-07-27 09:45:34 -07:00
sysctl_check.c
sysctl: check for bogus modes
2008-07-25 10:53:45 -07:00
taskstats.c
taskstats: remove initialization of static per-cpu variable
2008-07-25 10:53:47 -07:00
test_kprobes.c
time.c
timeconst.pl
timer.c
Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm
2008-07-14 16:06:58 -07:00
tsacct.c
task IO accounting: move all IO statistics in struct task_io_accounting
2008-07-27 16:12:28 -07:00
uid16.c
user.c
user_namespace.c
removed unused #include <linux/version.h>'s
2008-08-23 12:14:12 -07:00
utsname.c
removed unused #include <linux/version.h>'s
2008-08-23 12:14:12 -07:00
utsname_sysctl.c
removed unused #include <linux/version.h>'s
2008-08-23 12:14:12 -07:00
wait.c
workqueue.c
Merge branch 'core/locking' into core/urgent
2008-08-12 00:11:49 +02:00