lkml.org 
[lkml]   [2020]   [Jul]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [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

    \
     
     \ /
      Last update: 2020-07-30 12:04    [W:3.119 / U:0.408 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site