/usr/src/linux-headers-5.15.0-190/scripts
NameSizeModeActions
atomic/-0755rm
basic/-0755rm
clang-tools/-0755rm
coccinelle/-0755rm
dtc/-0755rm
dummy-tools/-0755rm
gcc-plugins/-0755rm
gdb/-0755rm
genksyms/-0755rm
kconfig/-0755rm
ksymoops/-0755rm
mod/-0755rm
package/-0755rm
selinux/-0755rm
tracing/-0755rm
.gitignore1600644editdlrm
adjust_autoksyms.sh21220755editdlrm
as-version.sh20810755editdlrm
asn1_compiler.c361800644editdlrm
bin2c.c7430644editdlrm
bloat-o-meter34450755editdlrm
bootgraph.pl57800755editdlrm
bpf_doc.py255820755editdlrm
cc-can-link.sh1660755editdlrm
cc-version.sh15490755editdlrm
check-sysctl-docs44720755editdlrm
checkdeclares.pl11230755editdlrm
checkincludes.pl19880755editdlrm
checkkconfigsymbols.py161260755editdlrm
checkpatch.pl2294260755editdlrm
checkstack.pl60010755editdlrm
checksyscalls.sh76000755editdlrm
checkversion.pl22110755editdlrm
check_extable.sh50480755editdlrm
cleanfile35420755editdlrm
cleanpatch51820755editdlrm
coccicheck80750755editdlrm
config48990755editdlrm
const_structs.checkpatch10090644editdlrm
decodecode29520755editdlrm
decode_stacktrace.sh76910755editdlrm
depmod.sh14410755editdlrm
dev-needs.sh62190755editdlrm
diffconfig42220755editdlrm
documentation-file-ref-check56870755editdlrm
export_report.pl46050755editdlrm
extract-cert.c37200644editdlrm
extract-ikconfig17340755editdlrm
extract-module-sig.pl37460755editdlrm
extract-sys-certs.pl38360755editdlrm
extract-vmlinux16950755editdlrm
extract_xc3028.pl456860755editdlrm
faddr2line83640755editdlrm
file-size.sh860755editdlrm
find-unused-docs.sh13040755editdlrm
gcc-goto.sh5110755editdlrm
gcc-ld7110755editdlrm
gcc-x86_32-has-stack-protector.sh4050755editdlrm
gcc-x86_64-has-stack-protector.sh1950755editdlrm
generate_initcall_order.pl60900755editdlrm
gen_autoksyms.sh15090755editdlrm
gen_ksymdeps.sh5560755editdlrm
get_abi.pl154630755editdlrm
get_dvb_firmware251280755editdlrm
get_feat.pl146890755editdlrm
get_maintainer.pl687440755editdlrm
gfp-translate17320755editdlrm
headerdep.pl35870755editdlrm
headers_check.pl38190755editdlrm
headers_install.sh34310755editdlrm
insert-sys-cert.c133920644editdlrm
jobserver-exec22130755editdlrm
kallsyms.c184980644editdlrm
Kbuild.include103920644editdlrm
Kconfig.include26350644editdlrm
kernel-doc703880755editdlrm
ld-version.sh18640755editdlrm
leaking_addresses.pl131120755editdlrm
Lindent5020755editdlrm
link-vmlinux.sh111810755editdlrm
Makefile16810644editdlrm
Makefile.asm-generic18640644editdlrm
Makefile.build201350644editdlrm
Makefile.clang16020644editdlrm
Makefile.clean22540644editdlrm
Makefile.compiler28060644editdlrm
Makefile.dtbinst10070644editdlrm
Makefile.extrawarn30920644editdlrm
Makefile.gcc-plugins27780644editdlrm
Makefile.headersinst29500644editdlrm
Makefile.host47430644editdlrm
Makefile.kasan17150644editdlrm
Makefile.kcov3330644editdlrm
Makefile.kcsan7390644editdlrm
Makefile.lib184550644editdlrm
Makefile.modfinal27930644editdlrm
Makefile.modinst25810644editdlrm
Makefile.modpost44780644editdlrm
Makefile.package67710644editdlrm
Makefile.ubsan7700644editdlrm
Makefile.userprogs16070644editdlrm
makelst8080755editdlrm
markup_oops.pl81100755editdlrm
min-tool-version.sh5580755editdlrm
mkcompile_h25410755editdlrm
mksysmap13690755editdlrm
mkuboot.sh4140755editdlrm
module.lds.S16910644editdlrm
modules-check.sh4270755editdlrm
nsdeps17650644editdlrm
objdiff29050755editdlrm
pahole-flags.sh7490755editdlrm
pahole-version.sh2690755editdlrm
parse-maintainers.pl46460755editdlrm
patch-kernel101850755editdlrm
profile2linkerlist.pl4140755editdlrm
prune-kernel7080755editdlrm
recordmcount.c171520644editdlrm
recordmcount.h198320644editdlrm
recordmcount.pl180490755editdlrm
remove-stale-files13360755editdlrm
setlocalversion35800755editdlrm
show_delta30870755editdlrm
sign-file.c101720644editdlrm
sorttable.c89490644editdlrm
sorttable.h100630644editdlrm
spdxcheck-test.sh2770644editdlrm
spdxcheck.py103340755editdlrm
spelling.txt326460644editdlrm
sphinx-pre-install250350755editdlrm
split-man.pl6040755editdlrm
stackdelta18870755editdlrm
stackusage7940755editdlrm
subarch.include6190644editdlrm
syscallhdr.sh19350755editdlrm
syscallnr.sh14850755editdlrm
syscalltbl.sh14890755editdlrm
tags.sh101100755editdlrm
tools-support-relr.sh5460755editdlrm
ubuntu-retpoline-extract-one74340644editdlrm
unifdef.c356370644editdlrm
ver_linux26480755editdlrm
xen-hypercalls.sh3860755editdlrm
xz_wrap.sh5630755editdlrm
Edit: /usr/src/linux-headers-5.15.0-190/scripts/headers_check.pl (3819B)
#!/usr/bin/env perl # SPDX-License-Identifier: GPL-2.0 # # headers_check.pl execute a number of trivial consistency checks # # Usage: headers_check.pl dir arch [files...] # dir: dir to look for included files # arch: architecture # files: list of files to check # # The script reads the supplied files line by line and: # # 1) for each include statement it checks if the # included file actually exists. # Only include files located in asm* and linux* are checked. # The rest are assumed to be system include files. # # 2) It is checked that prototypes does not use "extern" # # 3) Check for leaked CONFIG_ symbols use warnings; use strict; use File::Basename; my ($dir, $arch, @files) = @ARGV; my $ret = 0; my $line; my $lineno = 0; my $filename; foreach my $file (@files) { $filename = $file; open(my $fh, '<', $filename) or die "$filename: $!\n"; $lineno = 0; while ($line = <$fh>) { $lineno++; &check_include(); &check_asm_types(); &check_sizetypes(); &check_declarations(); # Dropped for now. Too much noise &check_config(); } close $fh; } exit $ret; sub check_include { if ($line =~ m/^\s*#\s*include\s+<((asm|linux).*)>/) { my $inc = $1; my $found; $found = stat($dir . "/" . $inc); if (!$found) { $inc =~ s#asm/#asm-$arch/#; $found = stat($dir . "/" . $inc); } if (!$found) { printf STDERR "$filename:$lineno: included file '$inc' is not exported\n"; $ret = 1; } } } sub check_declarations { # soundcard.h is what it is if ($line =~ m/^void seqbuf_dump\(void\);/) { return; } # drm headers are being C++ friendly if ($line =~ m/^extern "C"/) { return; } if ($line =~ m/^(\s*extern|unsigned|char|short|int|long|void)\b/) { printf STDERR "$filename:$lineno: " . "userspace cannot reference function or " . "variable defined in the kernel\n"; } } sub check_config { if ($line =~ m/[^a-zA-Z0-9_]+CONFIG_([a-zA-Z0-9_]+)[^a-zA-Z0-9_]/) { printf STDERR "$filename:$lineno: leaks CONFIG_$1 to userspace where it is not valid\n"; } } my $linux_asm_types; sub check_asm_types { if ($filename =~ /types.h|int-l64.h|int-ll64.h/o) { return; } if ($lineno == 1) { $linux_asm_types = 0; } elsif ($linux_asm_types >= 1) { return; } if ($line =~ m/^\s*#\s*include\s+/) { $linux_asm_types = 1; printf STDERR "$filename:$lineno: " . "include of is preferred over \n" # Warn until headers are all fixed #$ret = 1; } } my $linux_types; my %import_stack = (); sub check_include_typesh { my $path = $_[0]; my $import_path; my $fh; my @file_paths = ($path, $dir . "/" . $path, dirname($filename) . "/" . $path); for my $possible ( @file_paths ) { if (not $import_stack{$possible} and open($fh, '<', $possible)) { $import_path = $possible; $import_stack{$import_path} = 1; last; } } if (eof $fh) { return; } my $line; while ($line = <$fh>) { if ($line =~ m/^\s*#\s*include\s+/) { $linux_types = 1; last; } if (my $included = ($line =~ /^\s*#\s*include\s+[<"](\S+)[>"]/)[0]) { check_include_typesh($included); } } close $fh; delete $import_stack{$import_path}; } sub check_sizetypes { if ($filename =~ /types.h|int-l64.h|int-ll64.h/o) { return; } if ($lineno == 1) { $linux_types = 0; } elsif ($linux_types >= 1) { return; } if ($line =~ m/^\s*#\s*include\s+/) { $linux_types = 1; return; } if (my $included = ($line =~ /^\s*#\s*include\s+[<"](\S+)[>"]/)[0]) { check_include_typesh($included); } if ($line =~ m/__[us](8|16|32|64)\b/) { printf STDERR "$filename:$lineno: " . "found __[us]{8,16,32,64} type " . "without #include \n"; $linux_types = 2; # Warn until headers are all fixed #$ret = 1; } }