https://github.com/torvalds/linux
Revision 1a263ae60b04de959d9ce9caea4889385eefcc7b authored by Linus Torvalds on 09 May 2020, 22:58:04 UTC, committed by Linus Torvalds on 09 May 2020, 22:58:04 UTC
gcc-10 has started warning about conflicting types for a few new
built-in functions, particularly 'free()'.

This results in warnings like:

   crypto/xts.c:325:13: warning: conflicting types for built-in function ‘free’; expected ‘void(void *)’ [-Wbuiltin-declaration-mismatch]

because the crypto layer had its local freeing functions called
'free()'.

Gcc-10 is in the wrong here, since that function is marked 'static', and
thus there is no chance of confusion with any standard library function
namespace.

But the simplest thing to do is to just use a different name here, and
avoid this gcc mis-feature.

[ Side note: gcc knowing about 'free()' is in itself not the
  mis-feature: the semantics of 'free()' are special enough that a
  compiler can validly do special things when seeing it.

  So the mis-feature here is that gcc thinks that 'free()' is some
  restricted name, and you can't shadow it as a local static function.

  Making the special 'free()' semantics be a function attribute rather
  than tied to the name would be the much better model ]

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
1 parent adc7192
History
Tip revision: 1a263ae60b04de959d9ce9caea4889385eefcc7b authored by Linus Torvalds on 09 May 2020, 22:58:04 UTC
gcc-10: avoid shadowing standard library 'free()' in crypto
Tip revision: 1a263ae
File Mode Size
atomic
basic
coccinelle
dtc
dummy-tools
gcc-plugins
gdb
genksyms
kconfig
ksymoops
mod
package
selinux
tracing
.gitignore -rw-r--r-- 139 bytes
Kbuild.include -rw-r--r-- 12.2 KB
Kconfig.include -rw-r--r-- 2.0 KB
Lindent -rwxr-xr-x 502 bytes
Makefile -rw-r--r-- 1.2 KB
Makefile.asm-generic -rw-r--r-- 1.8 KB
Makefile.build -rw-r--r-- 16.8 KB
Makefile.clean -rw-r--r-- 2.2 KB
Makefile.dtbinst -rw-r--r-- 933 bytes
Makefile.extrawarn -rw-r--r-- 2.7 KB
Makefile.gcc-plugins -rw-r--r-- 2.4 KB
Makefile.headersinst -rw-r--r-- 2.9 KB
Makefile.host -rw-r--r-- 5.9 KB
Makefile.kasan -rw-r--r-- 1.4 KB
Makefile.kcov -rw-r--r-- 359 bytes
Makefile.lib -rw-r--r-- 15.0 KB
Makefile.modfinal -rw-r--r-- 1.8 KB
Makefile.modinst -rw-r--r-- 1.1 KB
Makefile.modpost -rw-r--r-- 3.3 KB
Makefile.modsign -rw-r--r-- 791 bytes
Makefile.package -rw-r--r-- 6.6 KB
Makefile.ubsan -rw-r--r-- 1.0 KB
adjust_autoksyms.sh -rwxr-xr-x 2.2 KB
asn1_compiler.c -rw-r--r-- 35.3 KB
bin2c.c -rw-r--r-- 743 bytes
bloat-o-meter -rwxr-xr-x 3.3 KB
bootgraph.pl -rwxr-xr-x 5.6 KB
bpf_helpers_doc.py -rwxr-xr-x 20.1 KB
cc-can-link.sh -rwxr-xr-x 166 bytes
check-sysctl-docs -rwxr-xr-x 4.4 KB
check_extable.sh -rwxr-xr-x 4.9 KB
checkincludes.pl -rwxr-xr-x 1.9 KB
checkkconfigsymbols.py -rwxr-xr-x 15.5 KB
checkpatch.pl -rwxr-xr-x 202.5 KB
checkstack.pl -rwxr-xr-x 5.3 KB
checksyscalls.sh -rwxr-xr-x 7.3 KB
checkversion.pl -rwxr-xr-x 1.9 KB
clang-version.sh -rwxr-xr-x 527 bytes
cleanfile -rwxr-xr-x 3.5 KB
cleanpatch -rwxr-xr-x 5.1 KB
coccicheck -rwxr-xr-x 7.2 KB
config -rwxr-xr-x 4.6 KB
const_structs.checkpatch -rw-r--r-- 964 bytes
decode_stacktrace.sh -rwxr-xr-x 3.9 KB
decodecode -rwxr-xr-x 2.6 KB
depmod.sh -rwxr-xr-x 1.3 KB
diffconfig -rwxr-xr-x 3.7 KB
documentation-file-ref-check -rwxr-xr-x 5.6 KB
export_report.pl -rwxr-xr-x 4.5 KB
extract-cert.c -rw-r--r-- 3.5 KB
extract-ikconfig -rwxr-xr-x 1.7 KB
extract-module-sig.pl -rwxr-xr-x 3.7 KB
extract-sys-certs.pl -rwxr-xr-x 3.7 KB
extract-vmlinux -rwxr-xr-x 1.7 KB
extract_xc3028.pl -rwxr-xr-x 44.6 KB
faddr2line -rwxr-xr-x 6.2 KB
file-size.sh -rwxr-xr-x 86 bytes
find-unused-docs.sh -rwxr-xr-x 1.3 KB
gcc-goto.sh -rwxr-xr-x 511 bytes
gcc-ld -rwxr-xr-x 711 bytes
gcc-plugin.sh -rwxr-xr-x 406 bytes
gcc-version.sh -rwxr-xr-x 588 bytes
gcc-x86_32-has-stack-protector.sh -rwxr-xr-x 173 bytes
gcc-x86_64-has-stack-protector.sh -rwxr-xr-x 198 bytes
gen_autoksyms.sh -rwxr-xr-x 1.3 KB
gen_compile_commands.py -rwxr-xr-x 5.6 KB
gen_ksymdeps.sh -rwxr-xr-x 399 bytes
get_abi.pl -rwxr-xr-x 10.1 KB
get_dvb_firmware -rwxr-xr-x 24.5 KB
get_maintainer.pl -rwxr-xr-x 66.6 KB
gfp-translate -rwxr-xr-x 1.7 KB
headerdep.pl -rwxr-xr-x 3.5 KB
headers_check.pl -rwxr-xr-x 3.7 KB
headers_install.sh -rwxr-xr-x 3.6 KB
insert-sys-cert.c -rw-r--r-- 8.9 KB
jobserver-exec -rwxr-xr-x 2.2 KB
kallsyms.c -rw-r--r-- 17.4 KB
kernel-doc -rwxr-xr-x 61.4 KB
ld-version.sh -rwxr-xr-x 269 bytes
leaking_addresses.pl -rwxr-xr-x 12.8 KB
link-vmlinux.sh -rwxr-xr-x 8.4 KB
makelst -rwxr-xr-x 808 bytes
markup_oops.pl -rwxr-xr-x 7.9 KB
mkcompile_h -rwxr-xr-x 2.3 KB
mkmakefile -rwxr-xr-x 426 bytes
mksysmap -rwxr-xr-x 1.3 KB
mkuboot.sh -rwxr-xr-x 414 bytes
module-common.lds -rw-r--r-- 901 bytes
modules-check.sh -rwxr-xr-x 303 bytes
namespace.pl -rwxr-xr-x 13.2 KB
nsdeps -rw-r--r-- 1.9 KB
objdiff -rwxr-xr-x 2.8 KB
parse-maintainers.pl -rwxr-xr-x 4.5 KB
patch-kernel -rwxr-xr-x 9.9 KB
profile2linkerlist.pl -rwxr-xr-x 414 bytes
prune-kernel -rwxr-xr-x 708 bytes
recordmcount.c -rw-r--r-- 16.5 KB
recordmcount.h -rw-r--r-- 17.1 KB
recordmcount.pl -rwxr-xr-x 18.8 KB
setlocalversion -rwxr-xr-x 4.3 KB
show_delta -rwxr-xr-x 3.0 KB
sign-file.c -rw-r--r-- 9.8 KB
sorttable.c -rw-r--r-- 7.5 KB
sorttable.h -rw-r--r-- 9.7 KB
spdxcheck-test.sh -rw-r--r-- 323 bytes
spdxcheck.py -rwxr-xr-x 9.9 KB
spelling.txt -rw-r--r-- 29.9 KB
sphinx-pre-install -rwxr-xr-x 18.3 KB
split-man.pl -rwxr-xr-x 600 bytes
stackdelta -rwxr-xr-x 1.8 KB
stackusage -rwxr-xr-x 794 bytes
subarch.include -rw-r--r-- 641 bytes
tags.sh -rwxr-xr-x 9.3 KB
tools-support-relr.sh -rwxr-xr-x 518 bytes
unifdef.c -rw-r--r-- 34.8 KB
ver_linux -rwxr-xr-x 2.7 KB
xen-hypercalls.sh -rw-r--r-- 386 bytes
xz_wrap.sh -rwxr-xr-x 562 bytes

back to top