Liming Wang
522a110b42
function tracing: fix wrong position computing of stack_trace
...
Impact: make output of stack_trace complete if buffer overruns
When read buffer overruns, the output of stack_trace isn't complete.
When printing records with seq_printf in t_show, if the read buffer
has overruned by the current record, then this record won't be
printed to user space through read buffer, it will just be dropped in
this printing.
When next printing, t_start should return the "*pos"th record, which
is the one dropped by previous printing, but it just returns
(m->private + *pos)th record.
Here we use a more sane method to implement seq_operations which can
be found in kernel code. Thus we needn't initialize m->private.
About testing, it's not easy to overrun read buffer, but we can use
seq_printf to print more padding bytes in t_show, then it's easy to
check whether or not records are lost.
This commit has been tested on both condition of overrun and non
overrun.
Signed-off-by: Liming Wang <liming.wang@windriver.com>
Acked-by: Steven Rostedt <rostedt@goodmis.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
2008-11-21 08:49:52 +01:00
..
irq
irq: make variable static
2008-10-22 07:37:17 +02:00
power
suspend: use WARN not WARN_ON to print the message
2008-11-18 08:07:36 -08:00
time
nohz: disable tick_nohz_kick_tick() for now
2008-11-10 22:39:27 +01:00
trace
function tracing: fix wrong position computing of stack_trace
2008-11-21 08:49:52 +01:00
.gitignore
acct.c
tty: Fix abusers of current->sighand->tty
2008-10-13 09:51:42 -07:00
audit.c
audit.h
audit_tree.c
Fix inotify watch removal/umount races
2008-11-15 12:26:44 -08:00
auditfilter.c
Fix inotify watch removal/umount races
2008-11-15 12:26:44 -08:00
auditsc.c
tty: Fix abusers of current->sighand->tty
2008-10-13 09:51:42 -07:00
backtracetest.c
bounds.c
capability.c
cgroup.c
cgroups: fix a serious bug in cgroupstats
2008-11-19 18:50:00 -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
Merge branches 'timers/clocksource', 'timers/hrtimers', 'timers/nohz', 'timers/ntp', 'timers/posixtimers' and 'timers/debug' into v28-timers-for-linus
2008-10-20 13:14:06 +02:00
configs.c
kernel/configs.c: remove useless comments
2008-10-20 08:52:34 -07:00
cpu.c
cpumask: introduce new API, without changing anything
2008-11-06 09:05:33 +01:00
cpuset.c
cpuset: update top cpuset's mems after adding a node
2008-11-19 18:49:58 -08:00
delayacct.c
dma-coherent.c
dma.c
kernel/dma.c: remove a CVS keyword
2008-10-16 11:21:30 -07:00
exec_domain.c
proc: move /proc/execdomains to kernel/exec_domain.c
2008-10-23 14:30:41 +04:00
exit.c
Move "exit_robust_list" into mm_release()
2008-11-15 10:20:36 -08:00
extable.c
fork.c
Move "exit_robust_list" into mm_release()
2008-11-15 10:20:36 -08:00
freezer.c
freezer_cg: use thaw_process() in unfreeze_cgroup()
2008-10-30 11:38:45 -07:00
futex.c
futex_compat.c
hrtimer.c
hrtimer: clean up unused callback modes
2008-11-12 09:54:40 +01:00
itimer.c
timers: fix itimer/many thread hang
2008-09-14 16:25:35 +02:00
kallsyms.c
sprint_symbol(): use less stack
2008-11-19 18:49:58 -08:00
Kconfig.freezer
container freezer: implement freezer cgroup subsystem
2008-10-20 08:52:34 -07:00
Kconfig.hz
Kconfig.preempt
kexec.c
kexec: fix crash_save_vmcoreinfo_init build problem
2008-10-20 15:28:50 -07:00
kfifo.c
kgdb.c
kgdb: call touch_softlockup_watchdog on resume
2008-10-06 13:50:59 -05:00
kmod.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus
2008-10-16 12:38:34 -07:00
kprobes.c
kernel/kprobes.c: don't pad kretprobe_table_locks[] on uniprocessor builds
2008-11-12 17:17:17 -08:00
ksysfs.c
profiling: dynamically enable readprofile at runtime
2008-10-16 11:21:31 -07:00
kthread.c
Merge branch 'tracing-v28-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
2008-10-20 13:35:07 -07:00
latencytop.c
lockdep.c
lockdep: fix irqs on/off ip tracing
2008-10-28 11:19:07 +01:00
lockdep_internals.h
lockdep_proc.c
Makefile
Remove -mno-spe flags as they dont belong
2008-11-17 13:24:35 -08:00
marker.c
markers: bit-field is not thread-safe nor smp-safe
2008-10-14 10:38:45 +02:00
module.c
Merge branch 'proc' of git://git.kernel.org/pub/scm/linux/kernel/git/adobriyan/proc
2008-10-23 12:04:37 -07:00
mutex-debug.c
mutex-debug.h
mutex.c
mutex.h
notifier.c
ftrace: ignore functions that cannot be kprobe-ed
2008-10-14 10:34:22 +02:00
ns_cgroup.c
nsproxy.c
panic.c
Make panic= and panic_on_oops into core_params
2008-10-22 10:00:25 +11: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
sched, signals: fix the racy usage of ->signal in account_group_xxx/run_posix_cpu_timers
2008-11-17 16:49:35 +01:00
posix-timers.c
Merge branch 'timers/range-hrtimers' into v28-range-hrtimers-for-linus-v2
2008-10-22 09:48:06 +02:00
printk.c
printk: remove unused code from kernel/printk.c
2008-10-23 21:54:29 +02:00
profile.c
kernel/profile.c: fix section mismatch warning
2008-11-18 08:49:24 +01:00
ptrace.c
make ptrace_untrace() static
2008-10-20 08:52:39 -07:00
rcuclassic.c
rcu: RCU-based detection of stalled CPUs for Classic RCU, fix
2008-10-03 10:41:00 +02:00
rcupdate.c
rcupdate: fix bug of rcu_barrier*()
2008-10-21 15:59:53 +02:00
rcupreempt.c
byteorder: remove direct includes of linux/byteorder/swab[b].h
2008-10-20 08:52:40 -07:00
rcupreempt_trace.c
rcutorture.c
byteorder: remove direct includes of linux/byteorder/swab[b].h
2008-10-20 12:51:53 -07:00
relay.c
relay: fix cpu offline problem
2008-11-18 15:08:56 +01:00
res_counter.c
resource.c
reserve_region_with_split: Fix GFP_KERNEL usage under spinlock
2008-11-01 09:53:58 -07:00
rtmutex-debug.c
rtmutex-debug.h
rtmutex-tester.c
rtmutex.c
rtmutex.h
rtmutex_common.h
rwsem.c
sched.c
cpuset: fix regression when failed to generate sched domains
2008-11-18 08:44:51 +01:00
sched_clock.c
sched_clock: prevent scd->clock from moving backwards
2008-10-10 11:17:04 +02:00
sched_cpupri.c
sched_cpupri.h
sched_debug.c
sched: fix kernel warning on /proc/sched_debug access
2008-11-16 08:07:15 +01:00
sched_fair.c
sched: release buddies on yield
2008-11-11 11:57:22 +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
Merge commit 'v2.6.28-rc1' into sched/urgent
2008-10-24 12:48:46 +02:00
sched_stats.h
sched, signals: fix the racy usage of ->signal in account_group_xxx/run_posix_cpu_timers
2008-11-17 16:49:35 +01:00
seccomp.c
semaphore.c
signal.c
'kill sig -1' must only apply to caller's namespace
2008-10-30 11:38:46 -07:00
smp.c
generic-ipi: fix the smp_mb() placement
2008-11-06 08:41:56 +01:00
softirq.c
irq: call __irq_enter() before calling the tick_idle_check
2008-11-10 22:36:39 +01:00
softlockup.c
Make the taint flags reliable
2008-10-16 11:21:31 -07:00
spinlock.c
srcu.c
stacktrace.c
stop_machine.c
stop_machine: fix race with return value (fixes Bug #11989 )
2008-11-16 15:09:52 -08:00
sys.c
Merge branch 'timers/range-hrtimers' into v28-range-hrtimers-for-linus-v2
2008-10-22 09:48:06 +02:00
sys_ni.c
reintroduce accept4
2008-11-19 18:49:57 -08:00
sysctl.c
Merge commit 'v2.6.28-rc2' into tracing/urgent
2008-10-27 10:50:54 +01:00
sysctl_check.c
taskstats.c
test_kprobes.c
time.c
timeconst.pl
timer.c
Add round_jiffies_up and related routines
2008-11-06 08:42:48 +01:00
tracepoint.c
tracepoint: check if the probe has been registered
2008-10-27 16:45:46 +01:00
tsacct.c
uid16.c
user.c
user_namespace.c
utsname.c
utsname_sysctl.c
sysctl: simplify ->strategy
2008-10-16 11:21:47 -07:00
wait.c
wait: kill is_sync_wait()
2008-10-16 11:21:31 -07:00
workqueue.c
cpumask: introduce new API, without changing anything
2008-11-06 09:05:33 +01:00