lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Mon, 15 Sep 2014 16:22:59 -0300 From: Arnaldo Carvalho de Melo <acme@...nel.org> To: Andi Kleen <andi@...stfloor.org> Cc: jolsa@...hat.com, linux-kernel@...r.kernel.org, namhyung@...nel.org, mingo@...nel.org, peterz@...radead.org, Andi Kleen <ak@...ux.intel.com> Subject: Re: [PATCH] perf, tools: Add PERF_PID Em Tue, Sep 09, 2014 at 05:03:53PM -0700, Andi Kleen escreveu: > From: Andi Kleen <ak@...ux.intel.com> > > It's currently difficult to filter out perf itself using a filter. > This can give cascading effects during IO tracing when the IO > perf does itself causes more trace output. > > The best way to filter is to use the pid. But it's difficult to get the pid > of perf without using hacks. > > Add a PERF_PID meta variable to the perf filter that contains the current pid. > > With this patch the following works > > % perf record -e syscalls:sys_enter_write -a --filter 'common_pid != PERF_PID' ... > > This won't work for more complex perf pipe lines with multiple processes, > but at least solves the problem nicely for a single perf. > @@ -983,6 +984,13 @@ int parse_filter(const struct option *opt, const char *str, > return -1; > } > > + /* Assume a pid has not more than 8 characters */ > + pid = strstr(last->filter, "PERF_PID"); > + if (pid) { > + char buf[9]; > + snprintf(buf, 9, "%8d", getpid()); > + memcpy(pid, buf, 8); Can we please remove this assumption? If the get to be more than 8 chars we'll be just truncating stuff and possibly filtering some other, unrelated process, no? pid_t getpid(void); typedef __pid_t pid_t; __STD_TYPE __PID_T_TYPE __pid_t; /* Type of process identifications. */ /usr/include/bits/typesizes.h:#define __PID_T_TYPE __S32_TYPE /usr/include/bits/types.h:#define __S32_TYPE int [acme@zoo linux]$ uname -a Linux zoo.ghostprotocols.net 3.17.0-rc1+ #2 SMP Thu Aug 21 12:25:42 BRT 2014 x86_64 x86_64 x86_64 GNU/Linux [acme@zoo ~]$ cat a.c #include <limits.h> #include <stdio.h> int main(int argc, char *argv[]) { printf("%8d", INT_MAX); } [acme@zoo ~]$ make a cc a.c -o a [acme@zoo ~]$ ./a | wc -c 10 [acme@zoo ~]$ The feature is needed, no doubt about it, thanks for working on it. I guess we need the equivalent of (python regexp) s/PERF_PID/("%d" % getpid())/g to properly implement this. - Arnaldo -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists