lkml.org 
[lkml]   [2012]   [Jan]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v4 17/18] perf: fix bug print_event_desc()
    Date
    This patches cleans up local variable types for msz and ret.
    They need to be size_t and ssize_t respectively.

    It also fixes a bug whereby perf would not read attr struct
    with a different size than what it knows about.

    Signed-off-by: Stephane Eranian <eranian@google.com>
    ---
    tools/perf/util/header.c | 19 +++++++++----------
    1 files changed, 9 insertions(+), 10 deletions(-)

    diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c
    index 8d6c18d..1fb365d 100644
    --- a/tools/perf/util/header.c
    +++ b/tools/perf/util/header.c
    @@ -1144,8 +1144,9 @@ static void print_event_desc(struct perf_header *ph, int fd, FILE *fp)
    uint64_t id;
    void *buf = NULL;
    char *str;
    - u32 nre, sz, nr, i, j, msz;
    - int ret;
    + u32 nre, sz, nr, i, j;
    + ssize_t ret;
    + size_t msz;

    /* number of events */
    ret = read(fd, &nre, sizeof(nre));
    @@ -1162,25 +1163,23 @@ static void print_event_desc(struct perf_header *ph, int fd, FILE *fp)
    if (ph->needs_swap)
    sz = bswap_32(sz);

    - /*
    - * ensure it is at least to our ABI rev
    - */
    - if (sz < (u32)sizeof(attr))
    - goto error;
    -
    memset(&attr, 0, sizeof(attr));

    - /* read entire region to sync up to next field */
    + /* buffer to hold on file attr struct */
    buf = malloc(sz);
    if (!buf)
    goto error;

    msz = sizeof(attr);
    - if (sz < msz)
    + if (sz < (ssize_t)msz)
    msz = sz;

    for (i = 0 ; i < nre; i++) {

    + /*
    + * must read entire on-file attr struct to
    + * sync up with layout.
    + */
    ret = read(fd, buf, sz);
    if (ret != (ssize_t)sz)
    goto error;
    --
    1.7.1


    \
     
     \ /
      Last update: 2012-01-27 22:07    [W:6.203 / U:0.112 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site