From: Al Viro <viro@zeniv.linux.org.uk>
To: Brahmajit Das <brahmajit.xyz@gmail.com>
Cc: brauner@kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 1/1] fs/qnx6: Fix building with GCC 15
Date: Fri, 4 Oct 2024 19:44:40 +0100 [thread overview]
Message-ID: <20241004184440.GQ4017910@ZenIV> (raw)
In-Reply-To: <20241004094921.615688-1-brahmajit.xyz@gmail.com>
On Fri, Oct 04, 2024 at 03:19:21PM +0530, Brahmajit Das wrote:
> GCC 15 enables -Werror=unterminated-string-initialization by default.
> This results in the following build error
>
> fs/qnx6/inode.c: In function ‘qnx6_checkroot’:
> fs/qnx6/inode.c:182:41: error: initializer-string for array of ‘char’ is too long [-Werror=unterminated-string-initialization]
> 182 | static char match_root[2][3] = {".\0\0", "..\0"};
> | ^~~~~~~
> fs/qnx6/inode.c:182:50: error: initializer-string for array of ‘char’ is too long [-Werror=unterminated-string-initialization]
> 182 | static char match_root[2][3] = {".\0\0", "..\0"};
> | ^~~~~~
>
> Dropping to match_root array and drictly comparing dir_entry entries via
> memcmp provides a work aroud for the build error.
LGTM, except that I'd probably make the commit message less warning-centric -
something like
qnx6_checkroot() had been using weirdly spelled initializer - it needed
to initialize 3-element arrays of char and it used NUL-padded 3-character
string literals (i.e. 4-element initializers, with completely pointless
zeroes at the end).
That had been spotted by gcc-15[*]; prior to that gcc quietly dropped
the 4th element of initializers.
However, none of that had been needed in the first place - all this array
is used for is checking that the first directory entry in root directory
is "." and the second - "..". The check had been expressed as a loop,
using that match_root[] array. Since there is no chance that we ever
want to extend that list of entries, the entire thing is much too fancy
for its own good; what we need is just a couple of explicit memcmp()
and that's it.
[*] <quoted warnings>
would explain what was really going on - the point is not to make gcc STFU, it's
to make the code more straightforward. The warning is basically "it smells
somewhat fishy around >here<, might be worth taking a look". And yes, it turned
out to be fishy; minimal "make it STFU" would be to strip those NULs from
the initializers (i.e. just go for static char match_root[2][3] = {".", ".."}; -
an array initializer is zero-padded if it's shorter than the array), but that
wasn't the only, er, oddity in that code.
next prev parent reply other threads:[~2024-10-04 18:44 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-02 21:16 Build failure with GCC 15 due to -Werror=unterminated-string-initialization Brahmajit
2024-10-02 21:46 ` Al Viro
2024-10-02 21:54 ` Al Viro
2024-10-03 6:52 ` Brahmajit
2024-10-04 9:49 ` [PATCH 1/1] fs/qnx6: Fix building with GCC 15 Brahmajit Das
2024-10-04 18:44 ` Al Viro [this message]
2024-10-04 19:51 ` Brahmajit
2024-10-04 19:51 ` [PATCH v2 " Brahmajit Das
2024-11-15 5:03 ` Al Viro
2024-12-02 4:29 ` Al Viro
2024-12-03 9:41 ` Christian Brauner
2024-10-06 19:38 ` [PATCH " David Laight
2024-10-06 20:00 ` Al Viro
2024-10-06 23:05 ` Brahmajit
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=20241004184440.GQ4017910@ZenIV \
--to=viro@zeniv.linux.org.uk \
--cc=brahmajit.xyz@gmail.com \
--cc=brauner@kernel.org \
--cc=linux-kernel@vger.kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.