Bug 216374

Summary: checkpatch.pl EXPORT_SYMBOL check false positive when #define precedes struct initialization without blank line
Product: Tools Reporter: joetalbott
Component: OtherAssignee: Tools.Other (tools_other)
Status: NEW ---    
Severity: normal CC: joetalbott
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: 568035b01cfb Subsystem:
Regression: No Bisected commit-id:

Description joetalbott 2022-08-18 14:51:26 UTC
I believe I've found a bug in checkpatch.pl where an EXPORT_SYMBOL for
an initialized struct following a simple #define without an intervening
blank line falsely reports that EXPORT_SYMBOL doesn't follow the symbol
definition.  Here's an example:

        #define SOMETHING_ELSE 1
        struct blah foo = {
                .a = 1
        };
        EXPORT_SYMBOL(foo);

You can see from the debug print that the full statement has not been
identified.

        FOO A<+EXPORT_SYMBOL(foo);> stat<+      .a = 1
         };> name<foo>

A real world example can be found by running checkpatch.pl against drivers/iio/industrialio-core.c

Unfortunately my perl skills were not sufficient to find a fix.