Here is a small code snippet, which will be complained about by checkpatch.pl: #define __STRUCT_KFIFO_COMMON(recsize, ptrtype) \ union { \ struct { \ unsigned int in; \ unsigned int out; \ }; \ char rectype[recsize]; \ ptrtype *ptr; \ const ptrtype *ptr_const; \ }; This construct is legal and safe, so checkpatch.pl should accept this. It should be also true for struct defined in a macro. Add the `struct' and `union' keywords to the exceptions list of the checkpatch.pl script, to prevent error message "Macros with multiple statements should be enclosed in a do - while loop". Otherwise it is not possible to build a struct or union with a macro.
Showing the changes to scripts/checkpatch.pl (1 of 1 file). Show all
Unified · Split
| @@ -2361,6 +2361,8 @@ sub process { · 2360 unmodified lines | |||
| 2361 | DECLARE_PER_CPU| | 2361 | DECLARE_PER_CPU| |
| 2362 | DEFINE_PER_CPU| | 2362 | DEFINE_PER_CPU| |
| 2363 | __typeof__\(| | 2363 | __typeof__\(| |
| 2364 | union| | ||
| 2365 | struct| | ||
| 2364 | \.$Ident\s*=\s*| | 2366 | \.$Ident\s*=\s*| |
| 2365 | ^\"|\"$ | 2367 | ^\"|\"$ |
| 2366 | }x; | 2368 | }x; |