Masami Hiramatsu
a06f6211ef
module: add within_module_core() and within_module_init()
...
This series of patches allows kprobes to probe module's __init and __exit
functions. This means, you can probe driver initialization and
terminating.
Currently, kprobes can't probe __init function because these functions are
freed after module initialization. And it also can't probe module __exit
functions because kprobe increments reference count of target module and
user can't unload it. this means __exit functions never be called unless
removing probes from the module.
To solve both cases, this series of patches introduces GONE flag and sets
it when the target code is freed(for this purpose, kprobes hooks
MODULE_STATE_* events). This also removes refcount incrementing for
allowing user to unload target module. Users can check which probes are
GONE by debugfs interface. For taking timing of freeing module's .init
text, these also include a patch which adds module's notifier of
MODULE_STATE_LIVE event.
This patch:
Add within_module_core() and within_module_init() for checking whether an
address is in the module .init.text section or .text section, and replace
within() local inline functions in kernel/module.c with them.
kprobes uses these functions to check where the kprobe is inserted.
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com>
Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com>
Cc: Anil S Keshavamurthy <anil.s.keshavamurthy@intel.com>
Acked-by: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2009-01-06 15:59:20 -08:00
..
irq
Merge branch 'cpus4096-for-linus-3' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
2009-01-03 12:04:39 -08:00
power
cpumask: convert rest of files in kernel/
2009-01-01 10:12:28 +10:30
time
Merge branch 'cpus4096-for-linus-3' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
2009-01-03 12:04:39 -08:00
trace
Merge branch 'cpus4096-for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
2009-01-02 11:44:09 -08:00
.gitignore
acct.c
CRED: Wrap task credential accesses in the core kernel
2008-11-14 10:39:12 +11: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
sanitize audit_log_capset()
2009-01-04 15:14:41 -05:00
cgroup.c
mm: remove cgroup_mm_owner_callbacks
2009-01-06 15:59:01 -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: introduce stop_machine_create/destroy.
2009-01-05 08:40:14 +10:30
cpuset.c
oom: print triggering task's cpuset and mems allowed
2009-01-06 15:58:59 -08:00
cred-internals.h
CRED: Inaugurate COW credentials
2008-11-14 10:39:23 +11:00
cred.c
User namespaces: set of cleanups (v2)
2008-11-24 18:57:41 -05:00
delayacct.c
schedstat: consolidate per-task cpu runtime stats
2008-12-18 13:54:01 +01:00
dma-coherent.c
dma.c
exec_domain.c
proc: move /proc/execdomains to kernel/exec_domain.c
2008-10-23 14:30:41 +04:00
exit.c
mm: introduce get_mm_hiwater_xxx(), fix taskstats->hiwater_xxx accounting
2009-01-06 15:59:09 -08:00
extable.c
Merge branch 'core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
2008-12-30 16:10:19 -08:00
fork.c
fork.c: cleanup for copy_sighand()
2009-01-06 15:59:11 -08:00
freezer.c
freezer_cg: use thaw_process() in unfreeze_cgroup()
2008-10-30 11:38:45 -07:00
futex.c
Merge branch 'core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
2008-12-30 16:10:19 -08: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
Merge branch 'irq-fixes-for-linus-4' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
2008-12-31 09:00:59 -08:00
itimer.c
kallsyms.c
allow stripping of generated symbols under CONFIG_KALLSYMS_ALL
2008-12-19 22:47:10 +01:00
Kconfig.freezer
container freezer: implement freezer cgroup subsystem
2008-10-20 08:52:34 -07:00
Kconfig.hz
Kconfig.preempt
rcu: provide RCU options on non-preempt architectures too
2008-12-25 09:31:28 +01:00
kexec.c
cpumask: prepare for iterators to only go to nr_cpu_ids/nr_cpumask_bits.: core
2009-01-01 10:12:15 +10:30
kfifo.c
kgdb.c
kmod.c
CRED: Inaugurate COW credentials
2008-11-14 10:39:23 +11:00
kprobes.c
kprobes: bugfix: try_module_get even if calling_mod is NULL
2009-01-06 15:59:20 -08:00
ksysfs.c
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-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
2008-12-30 16:10:19 -08:00
lockdep_internals.h
lockdep_proc.c
lockstat: contend with points
2008-10-20 15:43:10 +02:00
Makefile
Merge branch 'core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
2008-12-30 16:10:19 -08:00
marker.c
markers/tracpoints: fix non-modular build
2008-11-16 09:52:03 +01:00
module.c
module: add within_module_core() and within_module_init()
2009-01-06 15:59:20 -08:00
mutex-debug.c
mutex-debug.h
mutex.c
mutex: __used is needed for function referenced only from inline asm
2008-11-24 10:00:28 +01:00
mutex.h
notifier.c
Merge commit 'v2.6.28-rc6' into core/debug
2008-11-26 08:22:50 +01:00
ns_cgroup.c
nsproxy.c
User namespaces: set of cleanups (v2)
2008-11-24 18:57:41 -05:00
panic.c
oops: increment the oops UUID every time we oops
2009-01-06 15:59:12 -08:00
params.c
Fix compile warning in kernel/params.c
2008-10-23 12:09:00 -07:00
pid.c
pid_namespace.c
pm_qos_params.c
posix-cpu-timers.c
Merge commit 'v2.6.28' into core/core
2008-12-25 13:51:46 +01:00
posix-timers.c
Merge branches 'timers/clocksource', 'timers/hpet', 'timers/hrtimers', 'timers/nohz', 'timers/ntp', 'timers/posixtimers' and 'timers/rtc' into timers/core
2008-12-25 18:02:25 +01:00
printk.c
printk: fix discarding message when recursion_bug
2008-12-19 22:52:47 +01:00
profile.c
profile: don't include <asm/ptrace.h> twice.
2009-01-06 15:59:14 -08:00
ptrace.c
Merge branch 'tracing-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
2008-12-28 12:21:10 -08:00
rcuclassic.c
cpumask: convert RCU implementations, fix
2009-01-03 18:59:25 +01:00
rcupdate.c
rcupdate: fix bug of rcu_barrier*()
2008-10-21 15:59:53 +02:00
rcupreempt.c
cpumask: convert RCU implementations
2009-01-01 10:12:26 +10:30
rcupreempt_trace.c
"Tree RCU": scalable classic RCU implementation
2008-12-18 21:56:04 +01:00
rcutorture.c
cpumask: convert RCU implementations
2009-01-01 10:12:26 +10:30
rcutree.c
"Tree RCU": scalable classic RCU implementation
2008-12-18 21:56:04 +01:00
rcutree_trace.c
"Tree RCU": scalable classic RCU implementation
2008-12-18 21:56:04 +01:00
relay.c
relayfs: fix infinite loop with splice()
2008-12-10 08:01:52 -08:00
res_counter.c
resource.c
resources: skip sanity check of busy resources
2008-12-16 23:30:49 +01:00
rtmutex-debug.c
rtmutex-debug.h
rtmutex-tester.c
rtmutex.c
rtmutex.h
rtmutex_common.h
rwsem.c
sched.c
Merge branch 'cpus4096-for-linus-3' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
2009-01-03 12:04:39 -08:00
sched_clock.c
Revert "sched_clock: prevent scd->clock from moving backwards"
2008-12-14 16:23:17 -08:00
sched_cpupri.c
sched: convert struct cpupri_vec cpumask_var_t.
2008-11-24 17:52:22 +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: add uid information to sched_debug for CONFIG_USER_SCHED
2008-12-01 20:39:50 +01:00
sched_fair.c
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-cpumask into merge-rr-cpumask
2009-01-03 18:53:31 +01:00
sched_features.h
sched: backward looking buddy
2008-11-05 10:30:14 +01:00
sched_idletask.c
sched: add CONFIG_SMP consistency
2008-10-22 10:01:52 +02:00
sched_rt.c
sched: put back some stack hog changes that were undone in kernel/sched.c
2009-01-03 19:00:09 +01:00
sched_stats.h
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-cpumask into merge-rr-cpumask
2009-01-03 18:53:31 +01:00
seccomp.c
semaphore.c
signal.c
Merge branch 'tracing-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
2008-12-28 12:21:10 -08:00
smp.c
cpumask: prepare for iterators to only go to nr_cpu_ids/nr_cpumask_bits.: core
2009-01-01 10:12:15 +10:30
softirq.c
Merge branch 'cpus4096-for-linus-3' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
2009-01-03 12:04:39 -08:00
softlockup.c
cpumask: convert rest of files in kernel/
2009-01-01 10:12:28 +10:30
spinlock.c
srcu.c
stacktrace.c
stacktrace: provide save_stack_trace_tsk() weak alias
2008-12-25 11:44:43 +01:00
stop_machine.c
stop_machine: introduce stop_machine_create/destroy.
2009-01-05 08:40:14 +10:30
sys.c
Allow times and time system calls to return small negative values
2009-01-06 15:59:13 -08:00
sys_ni.c
reintroduce accept4
2008-11-19 18:49:57 -08:00
sysctl.c
mm: add dirty_background_bytes and dirty_bytes sysctls
2009-01-06 15:59:03 -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
Allow times and time system calls to return small negative values
2009-01-06 15:59:13 -08:00
timeconst.pl
timer.c
[PATCH] idle cputime accounting
2008-12-31 15:11:46 +01:00
tracepoint.c
markers/tracpoints: fix non-modular build
2008-11-16 09:52:03 +01:00
tsacct.c
mm: introduce get_mm_hiwater_xxx(), fix taskstats->hiwater_xxx accounting
2009-01-06 15:59:09 -08:00
uid16.c
CRED: Wrap current->cred and a few other accessors
2008-11-14 10:39:18 +11:00
user.c
Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
2008-12-28 12:27:58 -08:00
user_namespace.c
User namespaces: set of cleanups (v2)
2008-11-24 18:57:41 -05:00
utsname.c
utsname_sysctl.c
sysctl: simplify ->strategy
2008-10-16 11:21:47 -07:00
wait.c
workqueue.c
cpumask: convert kernel/workqueue.c
2009-01-01 10:12:25 +10:30