Shailabh Nagar
35df17c57c
[PATCH] task delay accounting fixes
...
Cleanup allocation and freeing of tsk->delays used by delay accounting.
This solves two problems reported for delay accounting:
1. oops in __delayacct_blkio_ticks
http://www.uwsg.indiana.edu/hypermail/linux/kernel/0608.2/1844.html
Currently tsk->delays is getting freed too early in task exit which can
cause a NULL tsk->delays to get accessed via reading of /proc/<tgid>/stats.
The patch fixes this problem by freeing tsk->delays closer to when
task_struct itself is freed up. As a result, it also eliminates the use of
tsk->delays_lock which was only being used (inadequately) to safeguard
access to tsk->delays while a task was exiting.
2. Possible memory leak in kernel/delayacct.c
http://www.uwsg.indiana.edu/hypermail/linux/kernel/0608.2/1389.html
The patch cleans up tsk->delays allocations after a bad fork which was
missing earlier.
The patch has been tested to fix the problems listed above and stress
tested with rapid calls to delay accounting's taskstats command interface
(which is the other path that can access the same data, besides the /proc
interface causing the oops above).
Signed-off-by: Shailabh Nagar <nagar@watson.ibm.com>
Cc: Balbir Singh <balbir@in.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-09-01 11:39:08 -07:00
..
irq
[PATCH] genirq: {en,dis}able_irq_wake() need refcounting too
2006-07-31 13:28:36 -07:00
power
[PATCH] Make suspend possible with a traced process at a breakpoint
2006-08-06 08:57:45 -07:00
time
.gitignore
acct.c
[PATCH] Fix sighand->siglock usage in kernel/acct.c
2006-07-14 21:53:54 -07:00
audit.c
[PATCH] fix oops with CONFIG_AUDIT and !CONFIG_AUDITSYSCALL
2006-08-03 10:50:39 -04:00
audit.h
[PATCH] add rule filterkey
2006-07-01 05:43:06 -04:00
auditfilter.c
[PATCH] introduce audit rules counter
2006-08-03 10:55:18 -04:00
auditsc.c
[PATCH] take filling ->pid, etc. out of audit_get_context()
2006-08-03 10:59:51 -04:00
capability.c
[PATCH] sched: cleanup, remove task_t, convert to struct task_struct
2006-07-03 15:27:11 -07:00
compat.c
configs.c
Remove obsolete #include <linux/config.h>
2006-06-30 19:25:36 +02:00
cpu.c
cpu hotplug: simplify and hopefully fix locking
2006-07-23 12:12:16 -07:00
cpuset.c
[PATCH] cpuset: oom panic fix
2006-08-27 11:01:32 -07:00
delayacct.c
[PATCH] task delay accounting fixes
2006-09-01 11:39:08 -07:00
dma.c
exec_domain.c
Remove obsolete #include <linux/config.h>
2006-06-30 19:25:36 +02:00
exit.c
[PATCH] task delay accounting fixes
2006-09-01 11:39:08 -07:00
extable.c
fork.c
[PATCH] task delay accounting fixes
2006-09-01 11:39:08 -07:00
futex.c
[PATCH] futex_find_get_task(): remove an obscure EXIT_ZOMBIE check
2006-08-27 11:01:30 -07:00
futex_compat.c
[PATCH] futex: Apply recent futex fixes to futex_compat
2006-08-06 08:57:49 -07:00
hrtimer.c
[PATCH] fix hrtimer percpu usage typo
2006-08-14 12:54:28 -07:00
itimer.c
kallsyms.c
[PATCH] null-terminate over-long /proc/kallsyms symbols
2006-07-14 21:53:52 -07:00
Kconfig.hz
Kconfig.preempt
kexec.c
kfifo.c
kmod.c
[PATCH] lockdep: annotate on-stack completions
2006-07-03 15:27:09 -07:00
kprobes.c
[PATCH] IA64: kprobe invalidate icache of jump buffer
2006-07-31 13:28:38 -07:00
ksysfs.c
Remove obsolete #include <linux/config.h>
2006-06-30 19:25:36 +02:00
kthread.c
[PATCH] remove kernel/kthread.c:kthread_stop_sem()
2006-07-14 21:53:52 -07:00
lockdep.c
[PATCH] lockdep: core, reduce per-lock class-cache size
2006-07-10 13:24:14 -07:00
lockdep_internals.h
[PATCH] lockdep: core
2006-07-03 15:27:03 -07:00
lockdep_proc.c
[PATCH] lockdep: procfs
2006-07-03 15:27:04 -07:00
Makefile
[PATCH] per-task-delay-accounting: taskstats interface
2006-07-14 21:53:56 -07:00
module.c
[PATCH] null-terminate over-long /proc/kallsyms symbols
2006-07-14 21:53:52 -07:00
mutex-debug.c
[PATCH] lockdep: prove mutex locking correctness
2006-07-03 15:27:04 -07:00
mutex-debug.h
[PATCH] lockdep: better lock debugging
2006-07-03 15:27:01 -07:00
mutex.c
[PATCH] lockdep: prove mutex locking correctness
2006-07-03 15:27:04 -07:00
mutex.h
[PATCH] lockdep: prove mutex locking correctness
2006-07-03 15:27:04 -07:00
panic.c
[PATCH] panic.c build fix
2006-08-14 12:54:28 -07:00
params.c
Remove obsolete #include <linux/config.h>
2006-06-30 19:25:36 +02:00
pid.c
[PATCH] sched: cleanup, remove task_t, convert to struct task_struct
2006-07-03 15:27:11 -07:00
posix-cpu-timers.c
posix-timers.c
printk.c
[PATCH] vt: printk: Fix framebuffer console triggering might_sleep assertion
2006-08-06 08:57:47 -07:00
profile.c
Remove obsolete #include <linux/config.h>
2006-06-30 19:25:36 +02:00
ptrace.c
[PATCH] sched: cleanup, remove task_t, convert to struct task_struct
2006-07-03 15:27:11 -07:00
rcupdate.c
[PATCH] cpu hotplug: replace __devinit* with __cpuinit* for cpu notifications
2006-07-31 13:28:39 -07:00
rcutorture.c
relay.c
resource.c
[PATCH] memory hotadd fixes: find_next_system_ram catch range fix
2006-08-06 08:57:48 -07:00
rtmutex-debug.c
[PATCH] sched: cleanup, remove task_t, convert to struct task_struct
2006-07-03 15:27:11 -07:00
rtmutex-debug.h
[PATCH] lockdep: better lock debugging
2006-07-03 15:27:01 -07:00
rtmutex-tester.c
[PATCH] Add try_to_freeze() to rt-test kthreads
2006-07-14 21:53:53 -07:00
rtmutex.c
[PATCH] reference rt-mutex-design in rtmutex.c
2006-07-31 13:28:43 -07:00
rtmutex.h
[PATCH] lockdep: better lock debugging
2006-07-03 15:27:01 -07:00
rtmutex_common.h
rwsem.c
[PATCH] lockdep: prove rwsem locking correctness
2006-07-03 15:27:04 -07:00
sched.c
[PATCH] revert "Drop tasklist lock in do_sched_setscheduler"
2006-08-27 11:01:29 -07:00
seccomp.c
signal.c
Fix force_sig_info() semantics after cleanups
2006-08-02 20:17:49 -07:00
softirq.c
[PATCH] Reducing local_bh_enable/disable overhead in irqtrace
2006-07-31 13:28:42 -07:00
softlockup.c
[PATCH] cpu hotplug: replace __devinit* with __cpuinit* for cpu notifications
2006-07-31 13:28:39 -07:00
spinlock.c
[PATCH] lockdep: prove spinlock rwlock locking correctness
2006-07-03 15:27:04 -07:00
stacktrace.c
[PATCH] lockdep: stacktrace subsystem, core
2006-07-03 15:27:02 -07:00
stop_machine.c
[PATCH] Remove redundant up() in stop_machine()
2006-08-27 11:01:31 -07:00
sys.c
[PATCH] Fix prctl privilege escalation and suid_dumpable (CVE-2006-2451)
2006-07-12 12:50:25 -07:00
sys_ni.c
sysctl.c
[PATCH] ZVC/zone_reclaim: Leave 1% of unmapped pagecache pages for file I/O
2006-07-03 15:26:59 -07:00
taskstats.c
[PATCH] taskstats: free skb, avoid returns in send_cpu_listeners
2006-07-31 13:28:37 -07:00
time.c
timer.c
[PATCH] sys_getppid oopses on debug kernel
2006-08-14 12:54:29 -07:00
uid16.c
unwind.c
user.c
wait.c
[PATCH] uninline init_waitqueue_head()
2006-07-10 13:24:25 -07:00
workqueue.c
[PATCH] workqueue: remove lock_cpu_hotplug()
2006-08-14 12:54:29 -07:00