提交 c17893c7 编写于 作者: J Joe Perches 提交者: Linus Torvalds

checkpatch: add a test for const with __read_mostly uses

const objects shouldn't be __read_mostly.  They are read-only.

Marking these objects as __read_mostly causes section conflicts with LTO
linking.

So add a test to try to avoid this issue.
Signed-off-by: NJoe Perches <joe@perches.com>
Cc: Andy Whitcroft <apw@shadowen.org>
Cc: Andi Kleen <andi@firstfloor.org>
Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
上级 d7fe8065
......@@ -4791,6 +4791,16 @@ sub process {
}
}
# check for __read_mostly with const non-pointer (should just be const)
if ($line =~ /\b__read_mostly\b/ &&
$line =~ /($Type)\s*$Ident/ && $1 !~ /\*\s*$/ && $1 =~ /\bconst\b/) {
if (ERROR("CONST_READ_MOSTLY",
"Invalid use of __read_mostly with const type\n" . $herecurr) &&
$fix) {
$fixed[$fixlinenr] =~ s/\s+__read_mostly\b//;
}
}
# don't use __constant_<foo> functions outside of include/uapi/
if ($realfile !~ m@^include/uapi/@ &&
$line =~ /(__constant_(?:htons|ntohs|[bl]e(?:16|32|64)_to_cpu|cpu_to_[bl]e(?:16|32|64)))\s*\(/) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册