lkml.org 
[lkml]   [2009]   [Aug]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[tip:perfcounters/urgent] perf util: Fix do_read() to fail on EOF instead of busy-looping
    Commit-ID:  47efff9a9b958f1c459a4c669168be0de474a9e3
    Gitweb: http://git.kernel.org/tip/47efff9a9b958f1c459a4c669168be0de474a9e3
    Author: Pierre Habouzit <pierre.habouzit@intersec.com>
    AuthorDate: Fri, 7 Aug 2009 14:16:00 +0200
    Committer: Ingo Molnar <mingo@elte.hu>
    CommitDate: Fri, 7 Aug 2009 17:08:17 +0200

    perf util: Fix do_read() to fail on EOF instead of busy-looping

    While toying with perf, I've noticed that perf record can
    easily enter a busy loop when doing something as silly as:

    $ perf record -A ls

    Yeah, do_read here really wants to read a known size, not being
    able to should die(), not busy-loop ;)

    That was the cause for the bug.

    Signed-off-by: Pierre Habouzit <pierre.habouzit@intersec.com>
    Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Paul Mackerras <paulus@samba.org>
    LKML-Reference: <1249647361-11582-2-git-send-email-pierre.habouzit@intersec.com>
    Signed-off-by: Ingo Molnar <mingo@elte.hu>


    ---
    tools/perf/util/header.c | 2 ++
    1 files changed, 2 insertions(+), 0 deletions(-)

    diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c
    index 95a44bc..b92a457 100644
    --- a/tools/perf/util/header.c
    +++ b/tools/perf/util/header.c
    @@ -185,6 +185,8 @@ static void do_read(int fd, void *buf, size_t size)

    if (ret < 0)
    die("failed to read");
    + if (ret == 0)
    + die("failed to read: missing data");

    size -= ret;
    buf += ret;

    \
     
     \ /
      Last update: 2009-08-07 17:13    [W:0.022 / U:3.172 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site