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 linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Thu, 26 Nov 2015 14:12:30 -0300 From: Arnaldo Carvalho de Melo <acme@...nel.org> To: Yannick Brosseau <scientist@...com> Cc: linux-kernel@...r.kernel.org, kernel-team@...com, zhu.wen-jie@...com, ak@...ux.intel.com Subject: Re: [PATCH] perf: Correctly identify anon_hugepage when generating map (v2) Em Thu, Nov 26, 2015 at 03:42:32AM -0800, Yannick Brosseau escreveu: > When parsing /proc/xxx/maps, the sscanf in perf_event__synthesize_mmap_events > truncate the map name at the space in "/anon_hugepage (deleted)". > is_anon_memory then only receive the string "/anon_hugepage" and do not detect it. > We change is_anon_memory to only compare the first part of the string > effectively ignoring if the (deleted) part is there or not. Thanks, applied, tested with: [acme@zoo c]$ cat scanf_proc_smaps.c #include <inttypes.h> #include <limits.h> #include <stdio.h> typedef unsigned int u32; typedef unsigned long long u64; struct mmap2_event { u32 pid, tid; u64 start; u64 len; u64 pgoff; u32 maj; u32 min; u64 ino; u64 ino_generation; u32 prot; u32 flags; char filename[PATH_MAX]; }; union perf_event { struct mmap2_event mmap2; }; static inline int is_anon_memory(const char *filename) { return !strcmp(filename, "//anon") || !strncmp(filename, "/dev/zero", sizeof("/dev/zero") - 1) || !strncmp(filename, "/anon_hugepage", sizeof("/anon_hugepage") - 1); } int main(void) { union perf_event event; unsigned int ino; char prot[5]; char bf[] = "7f939395e000-7f939395f000 rw-s 00000000 00:05 98715 /dev/zero (deleted)"; int n = sscanf(bf, "%"PRIx64"-%"PRIx64" %s %"PRIx64" %x:%x %u %s\n", &event.mmap2.start, &event.mmap2.len, prot, &event.mmap2.pgoff, &event.mmap2.maj, &event.mmap2.min, &ino, event.mmap2.filename); printf("event.filename=\"%s\"\n", event.mmap2.filename); if (is_anon_memory(event.mmap2.filename)) printf("This is anonymous memory\n"); return 0; } [acme@zoo c]$ ./scanf_proc_smaps event.filename="/dev/zero" This is anonymous memory [acme@zoo c]$ > Signed-off-by: Yannick Brosseau <scientist@...com> > --- > tools/perf/util/map.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/tools/perf/util/map.c b/tools/perf/util/map.c > index afc6b56..97e11a7 100644 > --- a/tools/perf/util/map.c > +++ b/tools/perf/util/map.c > @@ -26,8 +26,8 @@ const char *map_type__name[MAP__NR_TYPES] = { > static inline int is_anon_memory(const char *filename) > { > return !strcmp(filename, "//anon") || > - !strcmp(filename, "/dev/zero (deleted)") || > - !strcmp(filename, "/anon_hugepage (deleted)"); > + !strncmp(filename, "/dev/zero", sizeof("/dev/zero")-1) || > + !strncmp(filename, "/anon_hugepage", sizeof("/anon_hugepage")-1); > } > > static inline int is_no_dso_memory(const char *filename) > -- > 2.6.2 -- 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