[Linux-kernel-mentees] checkpatch.pl investigation: MULTISTATEMENT_MACRO_USE_DO_WHILE issues

Dwaipayan Ray dwaipayanray1 at gmail.com
Mon Sep 28 15:47:43 UTC 2020


Hi,
Checkpatch seems to generate some false positives on
certain macros.

For example running checkpatch on (kernel/trace/trace_export.c),

ERROR: Macros with multiple statements should be enclosed in a do - while loop
#49: FILE: kernel/trace/trace_export.c:49:
+#define __field_packed(type, container, item) type item;

ERROR: Macros with multiple statements should be enclosed in a do - while loop
#52: FILE: kernel/trace/trace_export.c:52:
+#define __array(type, item, size) type item[size];

and several other same errors.

Wrapping this in a do - while certainly doesn't make sense.
Removing the semicolon at the end of macro and appending semicolon
in the call changes the error to:

ERROR: Macros with complex values should be enclosed in parentheses
#49: FILE: kernel/trace/trace_export.c:49:
+#define __array_desc(type, container, item, size) type item[size]

This seems more reasonable. But the error isn't necessary in the first
place.

Thanks,
Dwaipayan.


More information about the Linux-kernel-mentees mailing list