linux-perf-users.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Ingo Molnar <mingo@kernel.org>, Thomas Gleixner <tglx@linutronix.de>
Cc: Jiri Olsa <jolsa@kernel.org>, Namhyung Kim <namhyung@kernel.org>,
	Clark Williams <williams@redhat.com>,
	linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org,
	Benjamin Peterson <benjamin@python.org>,
	Arnaldo Carvalho de Melo <acme@redhat.com>,
	Alexander Shishkin <alexander.shishkin@linux.intel.com>,
	Jiri Olsa <jolsa@redhat.com>,
	Peter Zijlstra <peterz@infradead.org>
Subject: [PATCH 08/33] perf trace beauty ioctl: Fix off-by-one error in cmd->string table
Date: Mon, 26 Aug 2019 22:36:09 -0300	[thread overview]
Message-ID: <20190827013634.3173-9-acme@kernel.org> (raw)
In-Reply-To: <20190827013634.3173-1-acme@kernel.org>

From: Benjamin Peterson <benjamin@python.org>

While tracing a program that calls isatty(3), I noticed that strace
reported TCGETS for the request argument of the underlying ioctl(2)
syscall while perf trace reported TCSETS. strace is corrrect. The bug in
perf was due to the tty ioctl beauty table starting at 0x5400 rather
than 0x5401.

Committer testing:

  Using augmented_raw_syscalls.o and settings to make 'perf trace'
  use strace formatting, i.e. with this in ~/.perfconfig

  # cat ~/.perfconfig
  [trace]
	add_events = /home/acme/git/linux/tools/perf/examples/bpf/augmented_raw_syscalls.c
	show_zeros = yes
	show_duration = no
	no_inherit = yes
	show_timestamp = no
	show_arg_names = no
	args_alignment = 40
	show_prefix = yes

  # strace -e ioctl stty > /dev/null
  ioctl(0, TCGETS, {B38400 opost isig icanon echo ...}) = 0
  ioctl(1, TIOCGWINSZ, 0x7fff8a9b0860)    = -1 ENOTTY (Inappropriate ioctl for device)
  ioctl(1, TCGETS, 0x7fff8a9b0540)        = -1 ENOTTY (Inappropriate ioctl for device)
  +++ exited with 0 +++
  #

Before:

  # perf trace -e ioctl stty > /dev/null
  ioctl(0, TCSETS, 0x7fff2cf79f20)        = 0
  ioctl(1, TIOCSWINSZ, 0x7fff2cf79f40)    = -1 ENOTTY (Inappropriate ioctl for device)
  ioctl(1, TCSETS, 0x7fff2cf79c20)        = -1 ENOTTY (Inappropriate ioctl for device)
  #

After:

  # perf trace -e ioctl stty > /dev/null
  ioctl(0, TCGETS, 0x7ffed0763920)        = 0
  ioctl(1, TIOCGWINSZ, 0x7ffed0763940)    = -1 ENOTTY (Inappropriate ioctl for device)
  ioctl(1, TCGETS, 0x7ffed0763620)        = -1 ENOTTY (Inappropriate ioctl for device)
  #

Signed-off-by: Benjamin Peterson <benjamin@python.org>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Fixes: 1cc47f2d46206d67285aea0ca7e8450af571da13 ("perf trace beauty ioctl: Improve 'cmd' beautifier")
Link: http://lkml.kernel.org/r/20190823033625.18814-1-benjamin@python.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/trace/beauty/ioctl.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/perf/trace/beauty/ioctl.c b/tools/perf/trace/beauty/ioctl.c
index 52242fa4072b..e19eb6ea361d 100644
--- a/tools/perf/trace/beauty/ioctl.c
+++ b/tools/perf/trace/beauty/ioctl.c
@@ -21,7 +21,7 @@
 static size_t ioctl__scnprintf_tty_cmd(int nr, int dir, char *bf, size_t size)
 {
 	static const char *ioctl_tty_cmd[] = {
-	"TCGETS", "TCSETS", "TCSETSW", "TCSETSF", "TCGETA", "TCSETA", "TCSETAW",
+	[_IOC_NR(TCGETS)] = "TCGETS", "TCSETS", "TCSETSW", "TCSETSF", "TCGETA", "TCSETA", "TCSETAW",
 	"TCSETAF", "TCSBRK", "TCXONC", "TCFLSH", "TIOCEXCL", "TIOCNXCL", "TIOCSCTTY",
 	"TIOCGPGRP", "TIOCSPGRP", "TIOCOUTQ", "TIOCSTI", "TIOCGWINSZ", "TIOCSWINSZ",
 	"TIOCMGET", "TIOCMBIS", "TIOCMBIC", "TIOCMSET", "TIOCGSOFTCAR", "TIOCSSOFTCAR",
-- 
2.21.0

  parent reply	other threads:[~2019-08-27  1:36 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-08-27  1:36 [GIT PULL] perf/core improvements and fixes Arnaldo Carvalho de Melo
2019-08-27  1:36 ` [PATCH 01/33] perf cpumap: No need to include perf.h, ditch it Arnaldo Carvalho de Melo
2019-08-27  1:36 ` [PATCH 02/33] perf stat: Remove needless headers from stat.h Arnaldo Carvalho de Melo
2019-08-27  1:36 ` [PATCH 03/33] perf record: Move record_opts and other record decls out of perf.h Arnaldo Carvalho de Melo
2019-08-27  1:36 ` [PATCH 04/33] perf cacheline: Move cacheline related routines to separate files Arnaldo Carvalho de Melo
2019-08-27  1:36 ` [PATCH 05/33] perf srcline: Add missing srcline.h header to files needing its defs Arnaldo Carvalho de Melo
2019-08-27  1:36 ` [PATCH 06/33] perf sort: Remove needless headers from sort.h, provide fwd struct decls Arnaldo Carvalho de Melo
2019-08-27  1:36 ` [PATCH 07/33] perf tests: Fixes hang in zstd compression test by changing the source of random data Arnaldo Carvalho de Melo
2019-08-27  1:36 ` Arnaldo Carvalho de Melo [this message]
2019-08-27  1:36 ` [PATCH 09/33] perf augmented_raw_syscalls: Rename augmented_filename to augmented_arg Arnaldo Carvalho de Melo
2019-08-27  1:36 ` [PATCH 10/33] perf augmented_raw_syscalls: Postpone tmp map lookup to after pid_filter Arnaldo Carvalho de Melo
2019-08-27  1:36 ` [PATCH 11/33] perf augmented_raw_syscalls: Introduce helper to get the scratch space Arnaldo Carvalho de Melo
2019-08-27  1:36 ` [PATCH 12/33] perf augmented_raw_syscalls: Reduce perf_event_output() boilerplate Arnaldo Carvalho de Melo
2019-08-27  1:36 ` [PATCH 13/33] perf tools: Remove duplicate headers Arnaldo Carvalho de Melo
2019-08-27  1:36 ` [PATCH 14/33] perf report: Use timestamp__scnprintf_nsec() for time sort key Arnaldo Carvalho de Melo
2019-08-27  1:36 ` [PATCH 15/33] perf report: Fix --ns time sort key output Arnaldo Carvalho de Melo
2019-08-27  1:36 ` [PATCH 16/33] perf script: Fix memory leaks in list_scripts() Arnaldo Carvalho de Melo
2019-08-27  1:36 ` [PATCH 17/33] libperf: Add PERF_RECORD_MMAP 'struct mmap_event' to perf/event.h Arnaldo Carvalho de Melo
2019-08-27  1:36 ` [PATCH 18/33] libperf: Add PERF_RECORD_MMAP2 'struct mmap2_event' " Arnaldo Carvalho de Melo
2019-08-27  1:36 ` [PATCH 19/33] libperf: Add PERF_RECORD_COMM 'struct comm_event' " Arnaldo Carvalho de Melo
2019-08-27  1:36 ` [PATCH 20/33] libperf: Add PERF_RECORD_NAMESPACES 'struct namespaces_event' " Arnaldo Carvalho de Melo
2019-08-27  1:36 ` [PATCH 21/33] libperf: Add PERF_RECORD_FORK 'struct fork_event' " Arnaldo Carvalho de Melo
2019-08-27  1:36 ` [PATCH 22/33] libperf: Add PERF_RECORD_LOST 'struct lost_event' " Arnaldo Carvalho de Melo
2019-08-27  1:36 ` [PATCH 23/33] libperf: Add PERF_RECORD_LOST_SAMPLES 'struct lost_samples_event' " Arnaldo Carvalho de Melo
2019-08-27  1:36 ` [PATCH 24/33] libperf: Add PERF_RECORD_READ 'struct read_event' " Arnaldo Carvalho de Melo
2019-08-27  1:36 ` [PATCH 25/33] libperf: Add PERF_RECORD_THROTTLE 'struct throttle_event' " Arnaldo Carvalho de Melo
2019-08-27  1:36 ` [PATCH 26/33] libperf: Add PERF_RECORD_KSYMBOL 'struct ksymbol_event' " Arnaldo Carvalho de Melo
2019-08-27  1:36 ` [PATCH 27/33] libperf: Add PERF_RECORD_BPF_EVENT 'struct bpf_event' " Arnaldo Carvalho de Melo
2019-08-27  1:36 ` [PATCH 28/33] libperf: Add PERF_RECORD_SAMPLE 'struct sample_event' " Arnaldo Carvalho de Melo
2019-08-27  1:36 ` [PATCH 29/33] libperf: Rename the PERF_RECORD_ structs to have a "perf" suffix Arnaldo Carvalho de Melo
2019-08-27  1:36 ` [PATCH 30/33] perf tools: Rename perf_event::ksymbol_event to perf_event::ksymbol Arnaldo Carvalho de Melo
2019-08-27  1:36 ` [PATCH 31/33] perf tools: Rename perf_event::bpf_event to perf_event::bpf Arnaldo Carvalho de Melo
2019-08-27  1:36 ` [PATCH 32/33] perf tool: Rename perf_tool::bpf_event to bpf Arnaldo Carvalho de Melo
2019-08-27  1:36 ` [PATCH 33/33] perf evsel: Rename perf_missing_features::bpf_event to ::bpf Arnaldo Carvalho de Melo
2019-08-27  8:24 ` [GIT PULL] perf/core improvements and fixes Ingo Molnar

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190827013634.3173-9-acme@kernel.org \
    --to=acme@kernel.org \
    --cc=acme@redhat.com \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=benjamin@python.org \
    --cc=jolsa@kernel.org \
    --cc=jolsa@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=namhyung@kernel.org \
    --cc=peterz@infradead.org \
    --cc=tglx@linutronix.de \
    --cc=williams@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).