Messages in this thread | | | Date | Thu, 30 Jul 2020 07:03:57 -0300 | From | Arnaldo Carvalho de Melo <> | Subject | Re: [PATCH -next] tools build: Check return value of fwrite_unlocked in jvmti_agent.c |
| |
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.shaobowang@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.shaobowang@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
| |