checkpatch.pl: Make CONFIG_IS_ENABLED(CONFIG_*) an error
authorAlper Nebi Yasak <alpernebiyasak@gmail.com>
Mon, 5 Oct 2020 06:57:30 +0000 (09:57 +0300)
committerTom Rini <trini@konsulko.com>
Wed, 14 Oct 2020 15:16:34 +0000 (11:16 -0400)
CONFIG_IS_ENABLED() takes the kconfig name without the CONFIG_ prefix,
e.g. CONFIG_IS_ENABLED(CLK) for CONFIG_CLK. Make including the prefix
an error in checkpatch.pl so calls in the wrong format aren't
accidentally reintroduced.

Signed-off-by: Alper Nebi Yasak <alpernebiyasak@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
scripts/checkpatch.pl
tools/patman/test_checkpatch.py

index 4bed2b0..4ed7e12 100755 (executable)
@@ -2365,6 +2365,12 @@ sub u_boot_line {
                ERROR("DISABLE_FDT_OR_INITRD_RELOC",
                     "fdt or initrd relocation disabled at boot time\n" . $herecurr);
        }
+
+       # Do not use CONFIG_ prefix in CONFIG_IS_ENABLED() calls
+       if ($line =~ /^\+.*CONFIG_IS_ENABLED\(CONFIG_\w*\).*/) {
+               ERROR("CONFIG_IS_ENABLED_CONFIG",
+                     "CONFIG_IS_ENABLED() takes values without the CONFIG_ prefix\n" . $herecurr);
+       }
 }
 
 sub process {
index 792196e..f71c70f 100644 (file)
@@ -405,6 +405,12 @@ index 0000000..2234c87
         pm.add_line('include/myfile.h', '#include <dm.h>')
         self.checkSingleMessage(pm, 'BARRED_INCLUDE_IN_HDR', 'error')
 
+    def testConfigIsEnabledConfig(self):
+        """Test for accidental CONFIG_IS_ENABLED(CONFIG_*) calls"""
+        pm = PatchMaker()
+        pm.add_line('common/main.c', 'if (CONFIG_IS_ENABLED(CONFIG_CLK))')
+        self.checkSingleMessage(pm, 'CONFIG_IS_ENABLED_CONFIG', 'error')
+
 
 if __name__ == "__main__":
     unittest.main()