mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-28 17:41:50 +00:00
checkpatch: add some new alloc functions to various tests
Many new generic allocation functions like the kvmalloc family have been added recently to the kernel. The allocation functions test now includes: o kvmalloc and variants o kstrdup_const o kmemdup_nul o dma_alloc_coherent o alloc_skb and variants Add a separate $allocFunctions variable to help make the allocation functions test a bit more readable. Miscellanea: o Use $allocFunctions in the unnecessary OOM message test and add exclude uses with __GFP_NOWARN o Use $allocFunctions in the unnecessary cast test o Add the kvmalloc family to the preferred sizeof alloc style foo = kvmalloc(sizeof(*foo), ...) Link: http://lkml.kernel.org/r/a5e60a2b93e10baf84af063f6c8e56402273105d.camel@perches.com Signed-off-by: Joe Perches <joe@perches.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
fdf13693d3
commit
e29a70f153
1 changed files with 15 additions and 4 deletions
|
@ -466,6 +466,16 @@ our $logFunctions = qr{(?x:
|
||||||
seq_vprintf|seq_printf|seq_puts
|
seq_vprintf|seq_printf|seq_puts
|
||||||
)};
|
)};
|
||||||
|
|
||||||
|
our $allocFunctions = qr{(?x:
|
||||||
|
(?:(?:devm_)?
|
||||||
|
(?:kv|k|v)[czm]alloc(?:_node|_array)? |
|
||||||
|
kstrdup(?:_const)? |
|
||||||
|
kmemdup(?:_nul)?) |
|
||||||
|
(?:\w+)?alloc_skb(?:ip_align)? |
|
||||||
|
# dev_alloc_skb/netdev_alloc_skb, et al
|
||||||
|
dma_alloc_coherent
|
||||||
|
)};
|
||||||
|
|
||||||
our $signature_tags = qr{(?xi:
|
our $signature_tags = qr{(?xi:
|
||||||
Signed-off-by:|
|
Signed-off-by:|
|
||||||
Co-developed-by:|
|
Co-developed-by:|
|
||||||
|
@ -5553,7 +5563,8 @@ sub process {
|
||||||
my ($s, $c) = ctx_statement_block($linenr - 3, $realcnt, 0);
|
my ($s, $c) = ctx_statement_block($linenr - 3, $realcnt, 0);
|
||||||
# print("line: <$line>\nprevline: <$prevline>\ns: <$s>\nc: <$c>\n\n\n");
|
# print("line: <$line>\nprevline: <$prevline>\ns: <$s>\nc: <$c>\n\n\n");
|
||||||
|
|
||||||
if ($s =~ /(?:^|\n)[ \+]\s*(?:$Type\s*)?\Q$testval\E\s*=\s*(?:\([^\)]*\)\s*)?\s*(?:devm_)?(?:[kv][czm]alloc(?:_node|_array)?\b|kstrdup|kmemdup|(?:dev_)?alloc_skb)/) {
|
if ($s =~ /(?:^|\n)[ \+]\s*(?:$Type\s*)?\Q$testval\E\s*=\s*(?:\([^\)]*\)\s*)?\s*$allocFunctions\s*\(/ &&
|
||||||
|
$s !~ /\b__GFP_NOWARN\b/ ) {
|
||||||
WARN("OOM_MESSAGE",
|
WARN("OOM_MESSAGE",
|
||||||
"Possible unnecessary 'out of memory' message\n" . $hereprev);
|
"Possible unnecessary 'out of memory' message\n" . $hereprev);
|
||||||
}
|
}
|
||||||
|
@ -6204,8 +6215,8 @@ sub process {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# check for pointless casting of kmalloc return
|
# check for pointless casting of alloc functions
|
||||||
if ($line =~ /\*\s*\)\s*[kv][czm]alloc(_node){0,1}\b/) {
|
if ($line =~ /\*\s*\)\s*$allocFunctions\b/) {
|
||||||
WARN("UNNECESSARY_CASTS",
|
WARN("UNNECESSARY_CASTS",
|
||||||
"unnecessary cast may hide bugs, see http://c-faq.com/malloc/mallocnocast.html\n" . $herecurr);
|
"unnecessary cast may hide bugs, see http://c-faq.com/malloc/mallocnocast.html\n" . $herecurr);
|
||||||
}
|
}
|
||||||
|
@ -6213,7 +6224,7 @@ sub process {
|
||||||
# alloc style
|
# alloc style
|
||||||
# p = alloc(sizeof(struct foo), ...) should be p = alloc(sizeof(*p), ...)
|
# p = alloc(sizeof(struct foo), ...) should be p = alloc(sizeof(*p), ...)
|
||||||
if ($perl_version_ok &&
|
if ($perl_version_ok &&
|
||||||
$line =~ /\b($Lval)\s*\=\s*(?:$balanced_parens)?\s*([kv][mz]alloc(?:_node)?)\s*\(\s*(sizeof\s*\(\s*struct\s+$Lval\s*\))/) {
|
$line =~ /\b($Lval)\s*\=\s*(?:$balanced_parens)?\s*((?:kv|k|v)[mz]alloc(?:_node)?)\s*\(\s*(sizeof\s*\(\s*struct\s+$Lval\s*\))/) {
|
||||||
CHK("ALLOC_SIZEOF_STRUCT",
|
CHK("ALLOC_SIZEOF_STRUCT",
|
||||||
"Prefer $3(sizeof(*$1)...) over $3($4...)\n" . $herecurr);
|
"Prefer $3(sizeof(*$1)...) over $3($4...)\n" . $herecurr);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue