From: Joe Perches Date: Wed, 10 Dec 2014 23:51:46 +0000 (-0800) Subject: checkpatch: try to avoid mask and shift errors X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=abb08a53883ed7afbe3f0ac9444805042f473a63;p=GitHub%2FLineageOS%2Fandroid_kernel_motorola_exynos9610.git checkpatch: try to avoid mask and shift errors Shift has a higher precedence that mask so warn when a mask then shift operation is done without parentheses around the mask. This test works well for a right shift, but the left shift is pretty commonly done correctly so only warn on the right shift. Signed-off-by: Joe Perches Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl index 853dc7f9f751..24d6702a95c2 100755 --- a/scripts/checkpatch.pl +++ b/scripts/checkpatch.pl @@ -4482,6 +4482,14 @@ sub process { } } +# check for mask then right shift without a parentheses + if ($^V && $^V ge 5.10.0 && + $line =~ /$LvalOrFunc\s*\&\s*($LvalOrFunc)\s*>>/ && + $4 !~ /^\&/) { # $LvalOrFunc may be &foo, ignore if so + WARN("MASK_THEN_SHIFT", + "Possible precedence defect with mask then right shift - may need parentheses\n" . $herecurr); + } + # check for bad placement of section $InitAttribute (e.g.: __initdata) if ($line =~ /(\b$InitAttribute\b)/) { my $attr = $1;