aboutsummaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorJoe Perches <joe@perches.com>2014-12-10 18:51:35 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2014-12-10 20:41:11 -0500
commit619a908aa334c854594e690fdbf1fe37b0e3e740 (patch)
tree460eebf94c133e2024b8ff5e2beee79f0cbcddc1 /scripts
parent2381097b6c9b8621797a717c0b199f780ecaa992 (diff)
checkpatch: add error on use of attribute((weak)) or __weak declarations
Using weak declarations can have unintended link defects. The __weak on the declaration causes non-weak definitions to become weak. Emit an error on its use. Signed-off-by: Joe Perches <joe@perches.com> Reported-by: Bjorn Helgaas <bhelgaas@google.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/checkpatch.pl9
1 files changed, 9 insertions, 0 deletions
diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 696254eee78b..8a577aa03bc6 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -4671,6 +4671,15 @@ sub process {
4671 } 4671 }
4672 } 4672 }
4673 4673
4674# Check for __attribute__ weak, or __weak declarations (may have link issues)
4675 if ($^V && $^V ge 5.10.0 &&
4676 $line =~ /(?:$Declare|$DeclareMisordered)\s*$Ident\s*$balanced_parens\s*(?:$Attribute)?\s*;/ &&
4677 ($line =~ /\b__attribute__\s*\(\s*\(.*\bweak\b/ ||
4678 $line =~ /\b__weak\b/)) {
4679 ERROR("WEAK_DECLARATION",
4680 "Using weak declarations can have unintended link defects\n" . $herecurr);
4681 }
4682
4674# check for sizeof(&) 4683# check for sizeof(&)
4675 if ($line =~ /\bsizeof\s*\(\s*\&/) { 4684 if ($line =~ /\bsizeof\s*\(\s*\&/) {
4676 WARN("SIZEOF_ADDRESS", 4685 WARN("SIZEOF_ADDRESS",