>From 207b0ce25f6b26cad5497bdd5e3c42ce4d9c1b50 Mon Sep 17 00:00:00 2001 From: Michael Sartain Date: Tue, 6 Jun 2017 19:04:43 -0600 Subject: [PATCH v2 4/6] Fix read / write data offsets in read / write loops To: Steven Rostedt Cc: linux-kernel@vger.kernel.org The tot variable in __do_write and do_read is incremented with the amount read / written, but subsequent times through the loop the calls continue to use the original data pointer. Signed-off-by: Michael Sartain --- trace-cmd-local.h | 2 +- trace-input.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/trace-cmd-local.h b/trace-cmd-local.h index 8595a8a..b8ab35b 100644 --- a/trace-cmd-local.h +++ b/trace-cmd-local.h @@ -31,7 +31,7 @@ static ssize_t __do_write(int fd, const void *data, size_t size) ssize_t w; do { - w = TEMP_FAILURE_RETRY(write(fd, data, size - tot)); + w = TEMP_FAILURE_RETRY(write(fd, data + tot, size - tot)); tot += w; if (!w) diff --git a/trace-input.c b/trace-input.c index 251d32b..8395917 100644 --- a/trace-input.c +++ b/trace-input.c @@ -202,7 +202,7 @@ static ssize_t do_read(struct tracecmd_input *handle, void *data, size_t size) ssize_t r; do { - r = TEMP_FAILURE_RETRY(read(handle->fd, data, size - tot)); + r = TEMP_FAILURE_RETRY(read(handle->fd, data + tot, size - tot)); tot += r; if (!r) -- 2.11.0