public inbox for bpf@vger.kernel.org
 help / color / mirror / Atom feed
From: Wander Lairson Costa <wander@redhat.com>
To: Tomas Glozar <tglozar@redhat.com>
Cc: Steven Rostedt <rostedt@goodmis.org>,
	 Ivan Pravdin <ipravdin.official@gmail.com>,
	Crystal Wood <crwood@redhat.com>,
	 Costa Shulyupin <costa.shul@redhat.com>,
	John Kacur <jkacur@redhat.com>,
	 Haiyong Sun <sunhaiyong@loongson.cn>,
	Tiezhu Yang <yangtiezhu@loongson.cn>,
	 Daniel Wagner <dwagner@suse.de>,
	Daniel Bristot de Oliveira <bristot@kernel.org>,
	 "open list:Real-time Linux Analysis (RTLA) tools"
	<linux-trace-kernel@vger.kernel.org>,
	 "open list:Real-time Linux Analysis (RTLA) tools"
	<linux-kernel@vger.kernel.org>,
	 "open list:BPF [MISC]:Keyword:(?:b|_)bpf(?:b|_)"
	<bpf@vger.kernel.org>
Subject: Re: [PATCH v3 16/18] rtla/trace: Fix I/O handling in save_trace_to_file()
Date: Mon, 9 Mar 2026 13:46:25 -0300	[thread overview]
Message-ID: <aa70ylF-FxHtzMJ_@fedora> (raw)
In-Reply-To: <CAP4=nvSBEgfJg8qFYakiSfhE-Cp3RF9OoT2NR2qO+oRk+1BGEg@mail.gmail.com>

On Wed, Mar 04, 2026 at 11:30:13AM +0100, Tomas Glozar wrote:
> čt 15. 1. 2026 v 18:29 odesílatel Wander Lairson Costa
> <wander@redhat.com> napsal:
> > diff --git a/tools/tracing/rtla/src/trace.c b/tools/tracing/rtla/src/trace.c
> > index fed3362527b08..8e93b48d33ef8 100644
> > --- a/tools/tracing/rtla/src/trace.c
> > +++ b/tools/tracing/rtla/src/trace.c
> > @@ -73,6 +73,7 @@ int save_trace_to_file(struct tracefs_instance *inst, const char *filename)
> >         char buffer[4096];
> >         int out_fd, in_fd;
> >         int retval = -1;
> > +       ssize_t n_read;
> >
> >         if (!inst || !filename)
> >                 return 0;
> > @@ -90,15 +91,30 @@ int save_trace_to_file(struct tracefs_instance *inst, const char *filename)
> >                 goto out_close_in;
> >         }
> >
> > -       do {
> > -               retval = read(in_fd, buffer, sizeof(buffer));
> > -               if (retval <= 0)
> > +       for (;;) {
> > +               n_read = read(in_fd, buffer, sizeof(buffer));
> > +               if (n_read < 0) {
> > +                       if (errno == EINTR)
> > +                               continue;
> > +                       err_msg("Error reading trace file: %s\n", strerror(errno));
> >                         goto out_close;
> > +               }
> > +               if (n_read == 0)
> > +                       break;
> >
> > -               retval = write(out_fd, buffer, retval);
> > -               if (retval < 0)
> > -                       goto out_close;
> > -       } while (retval > 0);
> > +               ssize_t n_written = 0;
> 
> Why break the style of declaring all variables at the beginning of the
> function? n_read, added in the same commit, keeps the style.
> 
> This also applies to the previous patch.

In this case `n_written` is harmless and I see no problem in moving it to the
beginning of the function.

For `written` and `w`, declaring them where they are right now brings the
benefit of making them const correct. If we move them to the top of the
function, we lose that. Since the kernel moved to gnu11, the C89 top-of-block
declarations are relaxed. Keeping them at the point of initialization minimizes
their scope and documents the intent. This helps avoid programmer mistakes.

However, I fail to follow my own advice more than I am willing to admit.

> 
> Tomas
> 


  reply	other threads:[~2026-03-09 16:46 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-01-15 16:31 [PATCH v3 00/18] rtla: Robustness and code quality improvements Wander Lairson Costa
2026-01-15 16:31 ` [PATCH v3 01/18] rtla: Exit on memory allocation failures during initialization Wander Lairson Costa
2026-01-15 16:31 ` [PATCH v3 02/18] rtla: Use strdup() to simplify code Wander Lairson Costa
2026-01-15 16:31 ` [PATCH v3 03/18] rtla: Simplify argument parsing Wander Lairson Costa
2026-01-15 21:47   ` Costa Shulyupin
2026-01-16 11:38     ` Wander Lairson Costa
2026-03-03 11:58   ` Tomas Glozar
2026-01-15 16:31 ` [PATCH v3 04/18] rtla: Introduce common_threshold_handler() helper Wander Lairson Costa
2026-01-15 16:31 ` [PATCH v3 05/18] rtla: Replace magic number with MAX_PATH Wander Lairson Costa
2026-03-03 12:46   ` Tomas Glozar
2026-01-15 16:31 ` [PATCH v3 06/18] rtla: Simplify code by caching string lengths Wander Lairson Costa
2026-01-15 16:31 ` [PATCH v3 07/18] rtla: Add strscpy() and replace strncpy() calls Wander Lairson Costa
2026-03-02 14:33   ` Tomas Glozar
2026-03-03 11:02     ` Wander Lairson Costa
2026-01-15 16:31 ` [PATCH v3 08/18] rtla/timerlat: Add bounds check for softirq vector Wander Lairson Costa
2026-01-15 16:31 ` [PATCH v3 09/18] rtla: Handle pthread_create() failure properly Wander Lairson Costa
2026-01-15 16:31 ` [PATCH v3 10/18] rtla: Add str_has_prefix() helper function Wander Lairson Costa
2026-01-15 16:31 ` [PATCH v3 11/18] rtla: Use str_has_prefix() for prefix checks Wander Lairson Costa
2026-01-15 16:31 ` [PATCH v3 12/18] rtla: Enforce exact match for time unit suffixes Wander Lairson Costa
2026-03-03 14:27   ` Tomas Glozar
2026-03-09 17:17     ` Wander Lairson Costa
2026-03-04 13:57   ` Tomas Glozar
2026-03-09 17:15     ` Wander Lairson Costa
2026-01-15 16:31 ` [PATCH v3 13/18] rtla: Use str_has_prefix() for option prefix check Wander Lairson Costa
2026-01-15 16:31 ` [PATCH v3 14/18] rtla/timerlat: Simplify RTLA_NO_BPF environment variable check Wander Lairson Costa
2026-03-03 14:38   ` Tomas Glozar
2026-01-15 16:31 ` [PATCH v3 15/18] rtla/trace: Fix write loop in trace_event_save_hist() Wander Lairson Costa
2026-03-03 14:51   ` Tomas Glozar
2026-01-15 16:31 ` [PATCH v3 16/18] rtla/trace: Fix I/O handling in save_trace_to_file() Wander Lairson Costa
2026-03-04 10:30   ` Tomas Glozar
2026-03-09 16:46     ` Wander Lairson Costa [this message]
2026-01-15 16:32 ` [PATCH v3 17/18] rtla/utils: Fix resource leak in set_comm_sched_attr() Wander Lairson Costa
2026-01-15 16:32 ` [PATCH v3 18/18] rtla/utils: Fix loop condition in PID validation Wander Lairson Costa

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=aa70ylF-FxHtzMJ_@fedora \
    --to=wander@redhat.com \
    --cc=bpf@vger.kernel.org \
    --cc=bristot@kernel.org \
    --cc=costa.shul@redhat.com \
    --cc=crwood@redhat.com \
    --cc=dwagner@suse.de \
    --cc=ipravdin.official@gmail.com \
    --cc=jkacur@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-trace-kernel@vger.kernel.org \
    --cc=rostedt@goodmis.org \
    --cc=sunhaiyong@loongson.cn \
    --cc=tglozar@redhat.com \
    --cc=yangtiezhu@loongson.cn \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox