diff --git a/[refs] b/[refs] index 00f407cb52e3..742566200e15 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 2c193c736803ceb547daec725e5c5d992d039f20 +refs/heads/master: 794e43b56c18b95fc9776c914a2659e7d558a352 diff --git a/trunk/tools/perf/util/session.c b/trunk/tools/perf/util/session.c index 9401909fa283..00ab298bbb4b 100644 --- a/trunk/tools/perf/util/session.c +++ b/trunk/tools/perf/util/session.c @@ -696,15 +696,18 @@ static int __perf_session__process_pipe_events(struct perf_session *self, p = &event; p += sizeof(struct perf_event_header); - err = do_read(self->fd, p, size - sizeof(struct perf_event_header)); - if (err <= 0) { - if (err == 0) { - pr_err("unexpected end of event stream\n"); - goto done; - } + if (size - sizeof(struct perf_event_header)) { + err = do_read(self->fd, p, + size - sizeof(struct perf_event_header)); + if (err <= 0) { + if (err == 0) { + pr_err("unexpected end of event stream\n"); + goto done; + } - pr_err("failed to read event data\n"); - goto out_err; + pr_err("failed to read event data\n"); + goto out_err; + } } if (size == 0 ||