Em Wed, Jul 29, 2020 at 04:47:36PM -0700, Ian Rogers escreveu: > On Fri, Jul 24, 2020 at 3:07 AM Wang ShaoBo <bobo.shaobow...@huawei.com> > wrote: > > > > Function jvmti_write_code called by compiled_method_load_cb may return > > error in using fwrite_unlocked, this failure should be captured and > > warned. > > > > Signed-off-by: Wang ShaoBo <bobo.shaobow...@huawei.com> > > --- > > tools/perf/jvmti/jvmti_agent.c | 23 +++++++++++++++-------- > > 1 file changed, 15 insertions(+), 8 deletions(-) > > > > diff --git a/tools/perf/jvmti/jvmti_agent.c b/tools/perf/jvmti/jvmti_agent.c > > index 88108598d6e9..a1fe6aa16b6d 100644 > > --- a/tools/perf/jvmti/jvmti_agent.c > > +++ b/tools/perf/jvmti/jvmti_agent.c > > @@ -363,7 +363,7 @@ jvmti_write_code(void *agent, char const *sym, > > struct jr_code_load rec; > > size_t sym_len; > > FILE *fp = agent; > > - int ret = -1; > > + int ret; > > > > /* don't care about 0 length function, no samples */ > > if (size == 0) > > @@ -401,16 +401,23 @@ jvmti_write_code(void *agent, char const *sym, > > rec.code_index = code_generation++; > > > > ret = fwrite_unlocked(&rec, sizeof(rec), 1, fp); > > - fwrite_unlocked(sym, sym_len, 1, fp); > > + if (ret) > > + goto error; > > Sorry, it seems I lost a reply to this. Won't ret here be the number > of items written and not an error code? Consequently all writes will > immediately goto error?
Yeah, I removed it from tmp.perf/core. Wang, please address Ian review, and consider having just one out exit label. - Arnaldo > Thanks, > Ian > > > + ret = fwrite_unlocked(sym, sym_len, 1, fp); > > + if (ret) > > + goto error; > > > > - if (code) > > - fwrite_unlocked(code, size, 1, fp); > > + if (code) { > > + ret = fwrite_unlocked(code, size, 1, fp); > > + if (ret) > > + goto error; > > + } > > > > funlockfile(fp); > > - > > - ret = 0; > > - > > - return ret; > > + return 0; > > +error: > > + funlockfile(fp); > > + return -1; > > } > > > > int > > -- > > 2.17.1 > > -- - Arnaldo