Message ID | 20230105231644.02c58967@gandalf.local.home (mailing list archive) |
---|---|
State | Accepted |
Commit | c4bc5d7bc130a3fb837c880e0a57a8b70ae82ae5 |
Headers | show |
Series | libtracefs: Flush pipe data in tracefs_cpu_flush() | expand |
diff --git a/src/tracefs-record.c b/src/tracefs-record.c index 428bec0dfe3d..459c346c6017 100644 --- a/src/tracefs-record.c +++ b/src/tracefs-record.c @@ -464,10 +464,13 @@ int tracefs_cpu_flush(struct tracefs_cpu *tcpu, void *buffer) if (tcpu->buffered < 0) tcpu->buffered = 0; - if (tcpu->buffered) - goto do_read; + if (tcpu->buffered) { + ret = read(tcpu->splice_pipe[0], buffer, tcpu->subbuf_size); + if (ret > 0) + tcpu->buffered -= ret; + return ret; + } - do_read: ret = read(tcpu->fd, buffer, tcpu->subbuf_size); if (ret > 0 && tcpu->buffered) tcpu->buffered -= ret;