Ananth N Mavinakayanahalli
f02b8624fe
kprobes: Fix locking imbalance in kretprobes
Fix locking imbalance in kretprobes:
=====================================
[ BUG: bad unlock balance detected! ]
-------------------------------------
kthreadd/2 is trying to release lock (&rp->lock) at:
[<c06b3080>] pre_handler_kretprobe+0xea/0xf4
but there are no more locks to release!
other info that might help us debug this:
1 lock held by kthreadd/2:
#0: (rcu_read_lock){..--}, at: [<c06b2b24>] __atomic_notifier_call_chain+0x0/0x5a
stack backtrace:
Pid: 2, comm: kthreadd Not tainted 2.6.29-rc8 #1
Call Trace:
[<c06ae498>] ? printk+0xf/0x17
[<c06b3080>] ? pre_handler_kretprobe+0xea/0xf4
[<c044ce6c>] print_unlock_inbalance_bug+0xc3/0xce
[<c0444d4b>] ? clocksource_read+0x7/0xa
[<c04450a4>] ? getnstimeofday+0x5f/0xf6
[<c044a9ca>] ? register_lock_class+0x17/0x293
[<c044b72c>] ? mark_lock+0x1e/0x30b
[<c0448956>] ? tick_dev_program_event+0x4a/0xbc
[<c0498100>] ? __slab_alloc+0xa5/0x415
[<c06b2fbe>] ? pre_handler_kretprobe+0x28/0xf4
[<c06b3080>] ? pre_handler_kretprobe+0xea/0xf4
[<c044cf1b>] lock_release_non_nested+0xa4/0x1a5
[<c06b3080>] ? pre_handler_kretprobe+0xea/0xf4
[<c044d15d>] lock_release+0x141/0x166
[<c06b07dd>] _spin_unlock_irqrestore+0x19/0x50
[<c06b3080>] pre_handler_kretprobe+0xea/0xf4
[<c06b20b5>] kprobe_exceptions_notify+0x1c9/0x43e
[<c06b2b02>] notifier_call_chain+0x26/0x48
[<c06b2b5b>] __atomic_notifier_call_chain+0x37/0x5a
[<c06b2b24>] ? __atomic_notifier_call_chain+0x0/0x5a
[<c06b2b8a>] atomic_notifier_call_chain+0xc/0xe
[<c0442d0d>] notify_die+0x2d/0x2f
[<c06b0f9c>] do_int3+0x1f/0x71
[<c06b0e84>] int3+0x2c/0x34
[<c042d476>] ? do_fork+0x1/0x288
[<c040221b>] ? kernel_thread+0x71/0x79
[<c043ed1b>] ? kthread+0x0/0x60
[<c043ed1b>] ? kthread+0x0/0x60
[<c04040b8>] ? kernel_thread_helper+0x0/0x10
[<c043ec7f>] kthreadd+0xac/0x148
[<c043ebd3>] ? kthreadd+0x0/0x148
[<c04040bf>] kernel_thread_helper+0x7/0x10
Signed-off-by: Ananth N Mavinakayanahalli <ananth@in.ibm.com>
Tested-by: Bharata B Rao <bharata@linux.vnet.ibm.com>
Cc: Masami Hiramatsu <mhiramat@redhat.com>
Cc: Jim Keniston <jkenisto@us.ibm.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: <stable@kernel.org> [2.6.29.x, 2.6.28.x, 2.6.27.x]
LKML-Reference: <20090318113621.GB4129@in.ibm.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
|
2009-03-18 12:51:16 +01:00 |
| .. |
|
irq
|
Merge branch 'x86/core' into tracing/textedit
|
2009-03-06 16:45:01 +01:00 |
|
power
|
PM: Split up sysdev_[suspend|resume] from device_power_[down|up]
|
2009-02-22 10:33:44 -08:00 |
|
time
|
hrtimers: allow the hot-unplugging of all cpus
|
2009-01-30 22:35:29 +01:00 |
|
trace
|
Merge branch 'tip/tracing/ftrace' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/ftrace
|
2009-03-17 10:37:37 +01:00 |
|
.gitignore
|
|
|
|
acct.c
|
[CVE-2009-0029] System call wrappers part 04
|
2009-01-14 14:15:19 +01:00 |
|
async.c
|
async: use list_move_tail
|
2009-02-08 10:00:26 -08:00 |
|
audit.c
|
[PATCH] fix broken timestamps in AVC generated by kernel threads
|
2008-12-09 02:27:41 -05:00 |
|
audit.h
|
fixing audit rule ordering mess, part 1
|
2009-01-04 15:14:41 -05:00 |
|
audit_tree.c
|
audit: validate comparison operations, store them in sane form
|
2009-01-04 15:14:42 -05:00 |
|
auditfilter.c
|
audit: validate comparison operations, store them in sane form
|
2009-01-04 15:14:42 -05:00 |
|
auditsc.c
|
make sure that filterkey of task,always rules is reported
|
2009-01-04 15:14:42 -05:00 |
|
backtracetest.c
|
|
|
|
bounds.c
|
|
|
|
capability.c
|
[CVE-2009-0029] System call wrappers part 04
|
2009-01-14 14:15:19 +01:00 |
|
cgroup.c
|
cgroups: fix possible use after free
|
2009-02-18 15:37:54 -08:00 |
|
cgroup_debug.c
|
cgroups: fix probable race with put_css_set[_taskexit] and find_css_set
|
2008-10-20 08:52:38 -07:00 |
|
cgroup_freezer.c
|
freezer_cg: disable writing freezer.state of root cgroup
|
2008-11-12 17:17:16 -08:00 |
|
compat.c
|
Allow times and time system calls to return small negative values
|
2009-01-06 15:59:13 -08:00 |
|
configs.c
|
kernel/configs.c: remove useless comments
|
2008-10-20 08:52:34 -07:00 |
|
cpu.c
|
stop_machine/cpu hotplug: fix disable_nonboot_cpus
|
2009-01-07 11:36:14 -08:00 |
|
cpuset.c
|
cpuset: fix possible deadlock in async_rebuild_sched_domains
|
2009-01-19 02:44:00 +01:00 |
|
cred-internals.h
|
CRED: Inaugurate COW credentials
|
2008-11-14 10:39:23 +11:00 |
|
cred.c
|
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6
|
2009-01-09 13:59:25 -08:00 |
|
delayacct.c
|
schedstat: consolidate per-task cpu runtime stats
|
2008-12-18 13:54:01 +01:00 |
|
dma-coherent.c
|
dma-coherent: Restore dma_alloc_from_coherent() large alloc fall back policy.
|
2009-01-21 18:51:53 +09:00 |
|
dma.c
|
kernel/dma.c: remove a CVS keyword
|
2008-10-16 11:21:30 -07:00 |
|
exec_domain.c
|
[CVE-2009-0029] System call wrappers part 04
|
2009-01-14 14:15:19 +01:00 |
|
exit.c
|
Merge branch 'linus' into x86/apic
|
2009-02-13 09:44:22 +01:00 |
|
extable.c
|
tracing/function-graph-tracer: drop the kernel_text_address check
|
2009-02-09 10:51:38 +01:00 |
|
fork.c
|
Merge branches 'tracing/ftrace', 'tracing/textedit' and 'linus' into tracing/core
|
2009-03-10 22:54:23 +01:00 |
|
freezer.c
|
freezer_cg: use thaw_process() in unfreeze_cgroup()
|
2008-10-30 11:38:45 -07:00 |
|
futex.c
|
futex: fix reference leak
|
2009-02-11 18:24:08 +01:00 |
|
futex_compat.c
|
CRED: Use RCU to access another task's creds and to release a task's own creds
|
2008-11-14 10:39:19 +11:00 |
|
hrtimer.c
|
hrtimer: prevent negative expiry value after clock_was_set()
|
2009-01-30 22:35:34 +01:00 |
|
itimer.c
|
timers: split process wide cpu clocks/timers
|
2009-02-05 13:04:33 +01:00 |
|
kallsyms.c
|
Revert "kbuild: strip generated symbols from *.ko"
|
2009-01-14 21:38:20 +01:00 |
|
Kconfig.freezer
|
container freezer: implement freezer cgroup subsystem
|
2008-10-20 08:52:34 -07:00 |
|
Kconfig.hz
|
sched: fix SCHED_HRTICK dependency
|
2008-07-28 14:37:38 +02:00 |
|
Kconfig.preempt
|
rcu: provide RCU options on non-preempt architectures too
|
2008-12-25 09:31:28 +01:00 |
|
kexec.c
|
Merge branch 'linus' into x86/apic
|
2009-02-22 20:05:19 +01:00 |
|
kfifo.c
|
|
|
|
kgdb.c
|
kgdb: call touch_softlockup_watchdog on resume
|
2008-10-06 13:50:59 -05:00 |
|
kmod.c
|
kmod: fix varargs kernel-doc
|
2009-01-06 15:59:27 -08:00 |
|
kprobes.c
|
kprobes: Fix locking imbalance in kretprobes
|
2009-03-18 12:51:16 +01:00 |
|
ksysfs.c
|
kernel/ksysfs.c:fix dependence on CONFIG_NET
|
2009-01-06 10:44:31 -08:00 |
|
kthread.c
|
tracepoints: add DECLARE_TRACE() and DEFINE_TRACE()
|
2008-11-16 09:01:36 +01:00 |
|
latencytop.c
|
KSYM_SYMBOL_LEN fixes
|
2008-12-10 08:01:54 -08:00 |
|
lockdep.c
|
Merge branch 'core/locking' into tracing/ftrace
|
2009-03-13 01:33:21 +01:00 |
|
lockdep_internals.h
|
lockdep: get_user_chars() redo
|
2009-02-14 23:28:22 +01:00 |
|
lockdep_proc.c
|
lockstat: warn about disabled lock debugging
|
2009-02-14 23:28:28 +01:00 |
|
lockdep_states.h
|
lockdep: move state bit definitions around
|
2009-02-14 23:27:59 +01:00 |
|
Makefile
|
PM: fix build for CONFIG_PM unset
|
2009-02-21 14:17:17 -08:00 |
|
marker.c
|
markers/tracpoints: fix non-modular build
|
2008-11-16 09:52:03 +01:00 |
|
module.c
|
Merge branch 'x86/core' into tracing/ftrace
|
2009-03-10 10:17:48 +01:00 |
|
mutex-debug.c
|
mutex: implement adaptive spinning
|
2009-01-14 18:09:02 +01:00 |
|
mutex-debug.h
|
mutex: implement adaptive spinning
|
2009-01-14 18:09:02 +01:00 |
|
mutex.c
|
mutex: adaptive spinnning, performance tweaks
|
2009-01-14 19:03:54 +01:00 |
|
mutex.h
|
mutex: implement adaptive spinning
|
2009-01-14 18:09:02 +01:00 |
|
notifier.c
|
Merge commit 'v2.6.28-rc6' into core/debug
|
2008-11-26 08:22:50 +01:00 |
|
ns_cgroup.c
|
ns_cgroup: remove unused spinlock
|
2009-01-08 08:31:02 -08:00 |
|
nsproxy.c
|
User namespaces: set of cleanups (v2)
|
2008-11-24 18:57:41 -05:00 |
|
panic.c
|
stackprotector: update make rules
|
2009-02-10 00:41:54 +01:00 |
|
params.c
|
Fix compile warning in kernel/params.c
|
2008-10-23 12:09:00 -07:00 |
|
pid.c
|
pid: generalize task_active_pid_ns
|
2009-01-08 08:31:12 -08:00 |
|
pid_namespace.c
|
pid_ns: (BUG 11391) change ->child_reaper when init->group_leader exits
|
2008-09-02 19:21:38 -07:00 |
|
pm_qos_params.c
|
pm_qos_requirement might sleep
|
2008-09-02 19:21:40 -07:00 |
|
posix-cpu-timers.c
|
timers: more consistently use clock vs timer
|
2009-02-13 13:04:05 +01:00 |
|
posix-timers.c
|
[CVE-2009-0029] System call wrappers part 05
|
2009-01-14 14:15:20 +01:00 |
|
printk.c
|
PM: Fix suspend_console and resume_console to use only one semaphore
|
2009-02-21 14:17:18 -08:00 |
|
profile.c
|
profiling: fix broken profiling regression
|
2009-02-10 00:50:37 +01:00 |
|
ptrace.c
|
[CVE-2009-0029] System call wrappers part 27
|
2009-01-14 14:15:29 +01:00 |
|
rcuclassic.c
|
rcu: Teach RCU that idle task is not quiscent state at boot
|
2009-02-26 04:08:14 +01:00 |
|
rcupdate.c
|
rcu: Teach RCU that idle task is not quiscent state at boot
|
2009-02-26 04:08:14 +01:00 |
|
rcupreempt.c
|
rcu: Teach RCU that idle task is not quiscent state at boot
|
2009-02-26 04:08:14 +01:00 |
|
rcupreempt_trace.c
|
"Tree RCU": scalable classic RCU implementation
|
2008-12-18 21:56:04 +01:00 |
|
rcutorture.c
|
rcu: fix bug in rcutorture system-shutdown code
|
2009-01-07 23:36:25 +01:00 |
|
rcutree.c
|
rcu: Teach RCU that idle task is not quiscent state at boot
|
2009-02-26 04:08:14 +01:00 |
|
rcutree_trace.c
|
"Tree RCU": scalable classic RCU implementation
|
2008-12-18 21:56:04 +01:00 |
|
relay.c
|
Merge branches 'tracing/ftrace', 'tracing/kmemtrace' and 'linus' into tracing/core
|
2009-02-03 06:25:38 +01:00 |
|
res_counter.c
|
memcg: memory cgroup resource counters for hierarchy
|
2009-01-08 08:31:05 -08:00 |
|
resource.c
|
resources: fix parameter name and kernel-doc
|
2009-01-15 16:39:38 -08:00 |
|
rtmutex-debug.c
|
|
|
|
rtmutex-debug.h
|
|
|
|
rtmutex-tester.c
|
|
|
|
rtmutex.c
|
hrtimer: convert kernel/* to the new hrtimer apis
|
2008-09-05 21:35:13 -07:00 |
|
rtmutex.h
|
|
|
|
rtmutex_common.h
|
|
|
|
rwsem.c
|
|
|
|
sched.c
|
Merge branch 'x86/core' into tracing/textedit
|
2009-03-06 16:45:01 +01:00 |
|
sched_clock.c
|
Merge branch 'sched/clock' into tracing/ftrace
|
2009-02-27 08:35:19 +01:00 |
|
sched_cpupri.c
|
sched: fix section mismatch
|
2009-01-06 11:07:15 +01:00 |
|
sched_cpupri.h
|
sched: convert struct cpupri_vec cpumask_var_t.
|
2008-11-24 17:52:22 +01:00 |
|
sched_debug.c
|
sched: partly revert "sched debug: remove NULL checking in print_cfs_rt_rq()"
|
2009-01-11 02:40:32 +01:00 |
|
sched_fair.c
|
sched: revert recent sync wakeup changes
|
2009-02-11 14:43:35 +01:00 |
|
sched_features.h
|
mutex: implement adaptive spinning
|
2009-01-14 18:09:02 +01:00 |
|
sched_idletask.c
|
sched: add CONFIG_SMP consistency
|
2008-10-22 10:01:52 +02:00 |
|
sched_rt.c
|
sched_rt: don't use first_cpu on cpumask created with cpumask_and
|
2009-02-01 10:49:52 +01:00 |
|
sched_stats.h
|
timers: split process wide cpu clocks/timers
|
2009-02-05 13:04:33 +01:00 |
|
seccomp.c
|
x86-64: seccomp: fix 32/64 syscall hole
|
2009-03-02 15:41:30 -08:00 |
|
semaphore.c
|
semaphore: __down_common: use signal_pending_state()
|
2008-08-05 14:33:47 -07:00 |
|
signal.c
|
signal: re-add dead task accumulation stats.
|
2009-02-05 13:04:33 +01:00 |
|
smp.c
|
generic-ipi: use per cpu data for single cpu ipi calls
|
2009-01-30 18:31:08 +01:00 |
|
softirq.c
|
softirq: no need to have SOFTIRQ in softirq name
|
2009-03-13 00:43:33 -04:00 |
|
softlockup.c
|
softlock: fix false panic which can occur if softlockup_thresh is reduced
|
2009-01-14 11:48:07 +01:00 |
|
spinlock.c
|
lockdep: spin_lock_nest_lock(), checkpatch fixes
|
2008-08-13 13:56:51 +02:00 |
|
srcu.c
|
|
|
|
stacktrace.c
|
stacktrace: provide save_stack_trace_tsk() weak alias
|
2008-12-25 11:44:43 +01:00 |
|
stop_machine.c
|
alloc_percpu: change percpu_ptr to per_cpu_ptr
|
2009-02-20 16:29:08 +09:00 |
|
sys.c
|
sched: don't allow setuid to succeed if the user does not have rt bandwidth
|
2009-02-27 11:11:53 +01:00 |
|
sys_ni.c
|
[CVE-2009-0029] Make sys_syslog a conditional system call
|
2009-01-14 14:15:16 +01:00 |
|
sysctl.c
|
mm: fix dirty_bytes/dirty_background_bytes sysctls on 64bit arches
|
2009-02-11 14:25:35 -08:00 |
|
sysctl_check.c
|
[XFS] remove restricted chown parameter from xfs linux
|
2008-10-30 18:30:09 +11:00 |
|
taskstats.c
|
cpumask: convert rest of files in kernel/
|
2009-01-01 10:12:28 +10:30 |
|
test_kprobes.c
|
kprobes: add tests for register_kprobes
|
2009-01-06 15:59:20 -08:00 |
|
time.c
|
[CVE-2009-0029] System call wrappers part 01
|
2009-01-14 14:15:18 +01:00 |
|
timeconst.pl
|
|
|
|
timer.c
|
timer: implement lockdep deadlock detection
|
2009-02-14 23:25:52 +01:00 |
|
tracepoint.c
|
markers/tracpoints: fix non-modular build
|
2008-11-16 09:52:03 +01:00 |
|
tsacct.c
|
Fix fixpoint divide exception in acct_update_integrals
|
2009-03-09 08:13:35 -07:00 |
|
uid16.c
|
[CVE-2009-0029] System call wrappers part 19
|
2009-01-14 14:15:26 +01:00 |
|
up.c
|
smp_call_function_single(): be slightly less stupid, fix #2
|
2009-01-12 16:04:37 +01:00 |
|
user.c
|
kernel/user.c: fix a memory leak when freeing up non-init usernamespaces users
|
2009-03-10 15:55:11 -07:00 |
|
user_namespace.c
|
Fix recursive lock in free_uid()/free_user_ns()
|
2009-02-27 16:26:21 -08:00 |
|
utsname.c
|
removed unused #include <linux/version.h>'s
|
2008-08-23 12:14:12 -07:00 |
|
utsname_sysctl.c
|
sysctl: simplify ->strategy
|
2008-10-16 11:21:47 -07:00 |
|
wait.c
|
wait: prevent exclusive waiter starvation
|
2009-02-05 12:56:48 -08:00 |
|
workqueue.c
|
Merge branches 'tracing/ftrace', 'tracing/kmemtrace' and 'linus' into tracing/core
|
2009-02-03 06:25:38 +01:00 |