mirror of https://gitee.com/openkylin/linux.git
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: Joe Perches <joe@perches.com> Cc: Andy Whitcroft <apw@shadowen.org> Cc: Andi Kleen <andi@firstfloor.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
d7fe8065ad
commit
c17893c740
|
@ -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*\(/) {
|
||||
|
|
Loading…
Reference in New Issue