original_kernel/tools/perf/util
David Ahern 4af4c9550c perf events: initialize fd array to -1 instead of 0
perf_evsel__alloc_fd allocates an array of file descriptors with the
memory initialized to 0. The array has dimensions for cpus and threads.

Later, __perf_evsel__open calls sys_perf_event_open for each cpu and thread
dimensions. If the open fails for any of the cpus or threads then the fd's
for this event are closed and the fd entry in the array is set to -1. Now,
if the first attempt fails for the event (e.g., the event is not supported)
the remaining dimensions (cpu > 0 and thread > 0) are not touched and left
at the initialized value of 0.

builtin-stat catches ENOENT and ENOSYS failures and allows the command to
continue. The end result is that stat attempts to read from an fd of 0 which
of course is stdin and so the command hangs until you type ctrl-D.

Resolve by initializing the array to -1 since an fd < 0 is already
handled.

Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/1306511914-8016-1-git-send-email-dsahern@gmail.com
Signed-off-by: David Ahern <dsahern@gmail.com>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2011-05-27 16:02:12 -03:00
..
include perf tools: Fix build on older systems 2011-05-26 11:16:29 -03:00
scripting-engines perf session: Pass evsel in event_ops->sample() 2011-03-23 19:28:58 -03:00
ui perf: Only include annotate.h once in tools/perf/util/ui/browsers/annotate.c 2011-05-10 10:20:07 +02:00
PERF-VERSION-GEN perf tools: Version incorrect with some versions of grep 2011-03-16 08:59:50 -03:00
abspath.c
alias.c
annotate.c perf symbols: Rename dso->origin to dso->symtab_type 2011-03-11 13:28:45 -03:00
annotate.h
bitmap.c
build-id.c perf session: Pass evsel in event_ops->sample() 2011-03-23 19:28:58 -03:00
build-id.h
cache.h
callchain.c
callchain.h
cgroup.c perf: Fix a build error with some GCC versions 2011-04-08 17:40:21 +02:00
cgroup.h
color.c
color.h
config.c
cpumap.c
cpumap.h
ctype.c
debug.c perf tools: Fixup exit path when not able to open events 2011-03-29 13:40:27 -03:00
debug.h perf tools: Fixup exit path when not able to open events 2011-03-29 13:40:27 -03:00
debugfs.c
debugfs.h
environment.c
event.c perf symbols: Handle /proc/sys/kernel/kptr_restrict 2011-05-26 11:15:25 -03:00
event.h perf tools: Pre-check sample size before parsing 2011-05-22 03:38:36 +02:00
evlist.c Merge branch 'perf/core' of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing into perf/urgent 2011-05-22 10:10:01 +02:00
evlist.h Merge branch 'perf/core' of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing into perf/urgent 2011-05-22 10:10:01 +02:00
evsel.c perf events: initialize fd array to -1 instead of 0 2011-05-27 16:02:12 -03:00
evsel.h perf evsel: Fix use of inherit 2011-04-15 12:52:28 -03:00
exec_cmd.c
exec_cmd.h
generate-cmdlist.sh
header.c perf symbols: Handle /proc/sys/kernel/kptr_restrict 2011-05-26 11:15:25 -03:00
header.h perf tools: Move evlist sample helpers to evlist area 2011-05-22 03:12:29 +02:00
help.c
help.h
hist.c perf tools: Improve support for sessions with multiple events 2011-03-06 13:13:40 -03:00
hist.h perf session: Pass evsel in event_ops->sample() 2011-03-23 19:28:58 -03:00
hweight.c
levenshtein.c
levenshtein.h
map.c
map.h
pager.c
parse-events.c perf: Fix multi-event parsing bug 2011-05-17 20:45:36 +02:00
parse-events.h perf script: Add support for H/W and S/W events 2011-03-14 17:07:20 -03:00
parse-options.c
parse-options.h
path.c
probe-event.c perf probe: Fix multiple --vars options behavior 2011-04-05 15:36:04 -03:00
probe-event.h
probe-finder.c perf probe: Fix the missed parameter initialization 2011-05-10 17:06:23 +02:00
probe-finder.h perf probe: Add fastpath to do lookup by function name 2011-03-29 13:40:27 -03:00
pstack.c
pstack.h
python.c Merge branch 'perf/core' of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing into perf/urgent 2011-05-22 10:10:01 +02:00
quote.c
quote.h
run-command.c
run-command.h
session.c perf tools: Fix ommitted mmap data update on remap 2011-05-23 13:22:57 +02:00
session.h perf tools: Pre-check sample size before parsing 2011-05-22 03:38:36 +02:00
setup.py perf tools: Fix NO_NEWT=1 python build error 2011-03-29 16:46:57 -03:00
sigchain.c
sigchain.h
sort.c
sort.h
strbuf.c
strbuf.h
strfilter.c
strfilter.h
string.c Fix common misspellings 2011-03-31 11:26:23 -03:00
strlist.c
strlist.h
svghelper.c
svghelper.h
symbol.c perf symbols: Handle /proc/sys/kernel/kptr_restrict 2011-05-26 11:15:25 -03:00
symbol.h perf symbols: Handle /proc/sys/kernel/kptr_restrict 2011-05-26 11:15:25 -03:00
thread.c
thread.h
thread_map.c
thread_map.h
top.c perf top: Remove redundant syme->origin field 2011-03-11 13:28:45 -03:00
top.h perf symbol: Move sym_entry->skip to symbol->ignore 2011-03-11 13:36:01 -03:00
trace-event-info.c
trace-event-parse.c rcu: move TREE_RCU from softirq to kthread 2011-05-05 23:16:54 -07:00
trace-event-read.c
trace-event-scripting.c perf session: Pass evsel in event_ops->sample() 2011-03-23 19:28:58 -03:00
trace-event.h perf session: Pass evsel in event_ops->sample() 2011-03-23 19:28:58 -03:00
types.h
usage.c
util.c
util.h
values.c
values.h
wrapper.c
xyarray.c
xyarray.h