Skip to content

Commit

Permalink
checkpatch: do not apply "initialise globals to 0" check to BPF progs
Browse files Browse the repository at this point in the history
BPF programs explicitly initialise global variables to 0 to make sure
clang (v10 or older) do not put the variables in the common section.  Skip
"initialise globals to 0" check for BPF programs to elimiate error
messages like:

    ERROR: do not initialise globals to 0
    #19: FILE: samples/bpf/tracex1_kern.c:21:

Link: https://lkml.kernel.org/r/[email protected]
Signed-off-by: Song Liu <[email protected]>
Acked-by: Joe Perches <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
liu-song-6 authored and torvalds committed Feb 26, 2021
1 parent 263afd3 commit 5b8f82e
Showing 1 changed file with 11 additions and 1 deletion.
12 changes: 11 additions & 1 deletion scripts/checkpatch.pl
Original file line number Diff line number Diff line change
Expand Up @@ -2453,6 +2453,15 @@ sub get_raw_comment {
return $comment;
}

sub exclude_global_initialisers {
my ($realfile) = @_;

# Do not check for BPF programs (tools/testing/selftests/bpf/progs/*.c, samples/bpf/*_kern.c, *.bpf.c).
return $realfile =~ m@^tools/testing/selftests/bpf/progs/.*\.c$@ ||
$realfile =~ m@^samples/bpf/.*_kern\.c$@ ||
$realfile =~ m@/bpf/.*\.bpf\.c$@;
}

sub process {
my $filename = shift;

Expand Down Expand Up @@ -4358,7 +4367,8 @@ sub process {
}

# check for global initialisers.
if ($line =~ /^\+$Type\s*$Ident(?:\s+$Modifier)*\s*=\s*($zero_initializer)\s*;/) {
if ($line =~ /^\+$Type\s*$Ident(?:\s+$Modifier)*\s*=\s*($zero_initializer)\s*;/ &&
!exclude_global_initialisers($realfile)) {
if (ERROR("GLOBAL_INITIALISERS",
"do not initialise globals to $1\n" . $herecurr) &&
$fix) {
Expand Down

0 comments on commit 5b8f82e

Please sign in to comment.