From: Steven Rostedt <rostedt@goodmis.org>
To: Thorsten Blum <thorsten.blum@linux.dev>
Cc: Masami Hiramatsu <mhiramat@kernel.org>,
Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
Guillaume Nault <gnault@redhat.com>,
Paolo Abeni <pabeni@redhat.com>, Ido Schimmel <idosch@nvidia.com>,
Petr Machata <petrm@nvidia.com>,
linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org
Subject: Re: [PATCH net-next] tracing: ipv6: Replace deprecated strcpy() with strscpy()
Date: Wed, 23 Jul 2025 14:36:25 -0400 [thread overview]
Message-ID: <20250723143625.79ab2c16@batman.local.home> (raw)
In-Reply-To: <F998F71D-1244-4154-BC5F-19201C23BDBE@linux.dev>
On Wed, 23 Jul 2025 10:46:12 -0700
Thorsten Blum <thorsten.blum@linux.dev> wrote:
> Your commit fca8300f68fe3 changed it from __dynamic_array() to __array()
> and __string() seems to be just a special version of __dynamic_array()
> with a length of -1.
>
> In the commit description you wrote: "Since the size of the name is at
> most 16 bytes (defined by IFNAMSIZ), it is not worth spending the effort
> to determine the size of the string."
So the original had:
__dynamic_array(char, name, IFNAMSIZ )
Which is not dynamic at all. A dynamic_array (like __string) saves the
size in meta data within the event. So basically the above is wasting
bytes to save a fixed size. If you are going to use a dynamic array,
might as well make it dynamic!
I was doing various clean ups back then so I didn't look too deeply
into this event when I made that change. I just saw the obvious waste
of space in the ring buffer.
Just to explain it in more detail. A dynamic_array has in the ring buffer:
short offset;
short len;
[..]
char name[len];
That is, 4 bytes are used to know the size of the array and where in
the event it is located. Thus the __dynamic_array() usage basically had:
short offset;
short len = IFNAMSIZ;
[..]
char name[IFNAMSIZ];
Why have the offset and length? with just __array(char, name, IFNAMSIZ}
it would be just:
char name[IFNAMSIZ];
See why I changed it?
Now, the change I'm suggesting now would make the __string() be dynamic!
short offset;
short len = strlen(res->nh && res->nh->fib_nh_dev ? res->nh->fib_nh_dev->name : "-") + 1;
[..]
char name[len];
As IFNAMSIZ is 16, and the above adds 4 bytes to the name, if the name
is less than 7 bytes or less, you save memory on the ring buffer.
2 bytes: offset
2 bytes: len;
7 bytes + '\0'
total: 12 bytes
Note, if there's only one dynamic value, it is always at least 4 bytes aligned.
-- Steve
next prev parent reply other threads:[~2025-07-23 18:36 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-07-14 7:54 Thorsten Blum
2025-07-14 11:42 ` Guillaume Nault
2025-07-14 16:38 ` Steven Rostedt
2025-07-23 17:46 ` Thorsten Blum
2025-07-23 18:36 ` Steven Rostedt [this message]
2025-07-23 21:15 ` Thorsten Blum
2025-07-23 21:21 ` Steven Rostedt
2025-07-23 21:30 ` Thorsten Blum
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=20250723143625.79ab2c16@batman.local.home \
--to=rostedt@goodmis.org \
--cc=gnault@redhat.com \
--cc=idosch@nvidia.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-trace-kernel@vger.kernel.org \
--cc=mathieu.desnoyers@efficios.com \
--cc=mhiramat@kernel.org \
--cc=pabeni@redhat.com \
--cc=petrm@nvidia.com \
--cc=thorsten.blum@linux.dev \
/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®