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: Mon, 26 Feb 2018 10:45:32 +0900 From: Namhyung Kim <namhyung@...nel.org> To: Masami Hiramatsu <mhiramat@...nel.org> Cc: Steven Rostedt <rostedt@...dmis.org>, linux-kernel@...r.kernel.org, Ingo Molnar <mingo@...hat.com>, Tom Zanussi <tom.zanussi@...ux.intel.com>, Arnaldo Carvalho de Melo <acme@...nel.org>, linux-trace-users@...r.kernel.org, linux-kselftest@...r.kernel.org, shuah@...nel.org, kernel-team@....com Subject: Re: [PATCH v3 15/18] tracing: probeevent: Add array type support On Sat, Feb 24, 2018 at 02:35:40PM +0900, Masami Hiramatsu wrote: > Add array type support for probe events. > This allows user to get arraied types from memory address. > The array type syntax is > > TYPE[N] > > Where TYPE is one of types (u8/16/32/64,s8/16/32/64, > x8/16/32/64, symbol, string) and N is a fixed value less > than 64. > > The string array type is a bit different from other types. For > other base types, <base-type>[1] is equal to <base-type> > (e.g. +0(%di):x32[1] is same as +0(%di):x32.) But string[1] is not > equal to string. The string type itself represents "char array", > but string array type represents "char * array". So, for example, > +0(%di):string[1] is equal to +0(+0(%di)):string. > > Signed-off-by: Masami Hiramatsu <mhiramat@...nel.org> > --- > Changes in v2: > - Add array description in README file > - Fix to init s3 code out of loop. > - Fix to proceed code when the last code is OP_ARRAY. > - Add string array type and bitfield array type. > --- [SNIP] > @@ -546,11 +610,16 @@ int traceprobe_define_arg_fields(struct trace_event_call *event_call, > /* Set argument names as fields */ > for (i = 0; i < tp->nr_args; i++) { > struct probe_arg *parg = &tp->args[i]; > - > - ret = trace_define_field(event_call, parg->type->fmttype, > - parg->name, > + const char *fmt = parg->type->fmttype; > + int size = parg->type->size; > + > + if (parg->fmt) > + fmt = parg->fmt; > + if (parg->count) > + size *= parg->count; > + ret = trace_define_field(event_call, fmt, parg->name, > offset + parg->offset, > - parg->type->size, > + parg->type->size * parg->count, It should use the 'size' variable, otherwise scalar types will have 0 size. Thanks, Namhyung > parg->type->is_signed, > FILTER_OTHER);
Powered by blists - more mailing lists