On Mon, Jun 12, 2017 at 09:29:31PM -0700, David Carrillo-Cisneros wrote: SNIP
> + > + for_each_set_bit(feat, header->adds_features, HEADER_FEAT_BITS) { > + if (!feat_ops[feat].synthesize) { > + pr_debug("No record header feature for header :%d\n", > feat); > + continue; > + } > + > + ff.offset = sizeof(*fe); > + > + ret = feat_ops[feat].write(&ff, evlist); > + if (ret || ff.offset <= (ssize_t)sizeof(*fe)) { > + pr_debug("Error writing feature\n"); > + continue; > + } > + > + /* ff.buf may have changed due to realloc in do_write() */ > + fe = ff.buf; > + memset(fe, 0, sizeof(*fe)); > + > + fe->feat_id = feat; > + fe->header.type = PERF_RECORD_HEADER_FEATURE; > + fe->header.size = ff.offset; > + > + ret = process(tool, ff.buf, NULL, NULL); > + if (ret) leaking ff.buf jirka > + return ret; > + } > + free(ff.buf); > + return 0; > +} > +