From: Andy Shevchenko <andriy.shevchenko@intel.com>
To: Neal Patalay <nealpatalay0@gmail.com>
Cc: andy@kernel.org, hansg@kernel.org, mchehab@kernel.org,
gregkh@linuxfoundation.org, sakari.ailus@linux.intel.com,
linux-kernel@vger.kernel.org, linux-media@vger.kernel.org,
linux-staging@lists.linux.dev, mugrinphoto@gmail.com,
matt@mattwardle.net
Subject: Re: [PATCH v2] staging: media: atomisp: refactor pipe graph dump stage formatting
Date: Sun, 5 Jul 2026 09:37:32 +0300 [thread overview]
Message-ID: <akn7rISgJJeFbOWS@ashevche-desk.local> (raw)
In-Reply-To: <20260705043920.105252-1-nealpatalay0@gmail.com>
On Sat, Jul 04, 2026 at 09:39:20PM -0700, Neal Patalay wrote:
> The original implementation of ia_css_debug_pipe_graph_dump_stage()
> includes an off-by-one error where the original strscpy() size dropped
> characters immediately before newlines. It also allocates over 600
> bytes across multiple buffers on the stack. Address these shortcomings
> and reduce stack usage with a single 256 byte buffer via a new helper
> function, ia_css_debug_build_info().
...
> +static void ia_css_debug_build_info(char *info, size_t info_size,
> + int *offset,
> + const char *flag_str, size_t flag_str_size,
> + int *line_len)
> +{
> + /*
> + * If new line length exceeds max line length,
> + * replace the last ',' with a "\\n"
> + */
> + if (*line_len > 0 && info_size - *offset >= 2 &&
> + *line_len + flag_str_size > ENABLE_LINE_MAX_LENGTH) {
> + info[*offset - 1] = '\\';
> + info[*offset] = 'n';
> + *offset += 1;
> + *line_len = 0;
> + }
> + int len_written = scnprintf(info + *offset, info_size - *offset,
> + "%s,", flag_str);
The definition should go to the top of the function, there are only a few
exceptions and none is for this case.
Also for the sake of better layering, introduce local variables to track values
of offset and line_len and only assign them at the end.
> + *offset += len_written;
> + *line_len += len_written;
So this will become
int len = *line_len;
int off = *offset;
int len_written;
... // here use only off and len
*offset = off + len_written;
*line_len = len + len_written;
> +}
...
> +#define ADD_INFO(flag, flag_str) \
> + do { \
> + if (bi->enable.flag) \
> + ia_css_debug_build_info(enable_info, \
> + sizeof(enable_info), \
> + &offset, \
> + flag_str, \
> + sizeof(flag_str), \
> + &line_len); \
> + } while (0)
There is no need to have do {} while (0) as there is conditional already and the
macro doesn't return anything. Also it's wrongly indented.
The below should work.
#define ADD_INFO(flag, flag_str) \
if (bi->enable.flag) \
ia_css_debug_build_info(enable_info, sizeof(enable_info), \
&offset, \
flag_str, sizeof(flag_str), \
&line_len); \
--
With Best Regards,
Andy Shevchenko
next prev parent reply other threads:[~2026-07-05 6:37 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-05 4:39 Neal Patalay
2026-07-05 6:37 ` Andy Shevchenko [this message]
2026-07-05 7:19 ` Neal Patalay
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=akn7rISgJJeFbOWS@ashevche-desk.local \
--to=andriy.shevchenko@intel.com \
--cc=andy@kernel.org \
--cc=gregkh@linuxfoundation.org \
--cc=hansg@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=linux-staging@lists.linux.dev \
--cc=matt@mattwardle.net \
--cc=mchehab@kernel.org \
--cc=mugrinphoto@gmail.com \
--cc=nealpatalay0@gmail.com \
--cc=sakari.ailus@linux.intel.com \
/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
all inboxes | Powered by JetHome®