mirror of
https://github.com/kdave/btrfs-progs
synced 2025-02-23 13:26:50 +00:00
btrfs-progs: fix seemly wrong format overflow warning
[WARNING] When compiling btrfs-progs, the following warning pops up: In file included from /usr/include/stdio.h:867, from ./kerncompat.h:22, from common/fsfeatures.c:17: In function 'printf', inlined from 'process_features' at common/fsfeatures.c:192:4, inlined from 'btrfs_process_runtime_features' at common/fsfeatures.c:205:2: /usr/include/bits/stdio2.h:107:10: warning: '%s' directive argument is null [-Wformat-overflow=] 107 | return __printf_chk (__USE_FORTIFY_LEVEL - 1, __fmt, __va_arg_pack ()); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ This only occur with default make parameters. If compiling with D=1, the warning just disappears. The involved tool chain is: - GCC 10.1.0 [CAUSE] The offending code is: static void process_features(u64 flags, enum feature_source source) { ... if (flags & feat->flag) { printf("Turning ON incompat feature '%s': %s\n", feat->name, feat->desc); } ... } Currently, there is no runtime/fs feature without a name nor description. So we shouldn't hit a feature with NULL as name nor description. This looks like a bug in GCC though. [WORKAROUND] However can workaround it by doing an explicit check on feat->name and feat->desc to teach GCC not to do a wrong warning. Signed-off-by: Qu Wenruo <wqu@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
ac75513621
commit
2eb48d8c81
@ -188,7 +188,7 @@ static void process_features(u64 flags, enum feature_source source)
|
||||
for (i = 0; i < array_size; i++) {
|
||||
const struct btrfs_feature *feat = get_feature(i, source);
|
||||
|
||||
if (flags & feat->flag) {
|
||||
if (flags & feat->flag && feat->name && feat->desc) {
|
||||
printf("Turning ON incompat feature '%s': %s\n",
|
||||
feat->name, feat->desc);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user