• Antonio Borneo's avatar
    checkpatch: fix multiple const * types · 7b18496c
    Antonio Borneo authored
    Commit 1574a29f ("checkpatch: allow multiple const * types") claims to
    support repetition of pattern "const *", but it actually allows only one
    extra instance.
    
    Check the following lines
    	int a(char const * const x[]);
    	int b(char const * const *x);
    	int c(char const * const * const x[]);
    	int d(char const * const * const *x);
    
    with command
    
    	./scripts/checkpatch.pl --show-types -f filename
    
    to find that only the first line passes the test, while a warning
    is triggered by the other 3 lines:
    
    	WARNING:FUNCTION_ARGUMENTS: function definition argument
    	'char const * const' should also have an identifier name
    
    The reason is that the pattern match halts at the second asterisk in the
    line, thus the remaining text starting with asterisk fails to match a
    valid name for a variable.
    
    Fixed by replacing "?" (Match 1 or 0 times) with "{0,4}" (Match no more
    than 4 times) in the regular expression.  Fix also the similar test for
    types in unusual order.
    
    Fixes: 1574a29f ("checkpatch: allow multiple const * types")
    Signed-off-by: default avatarAntonio Borneo <borneo.antonio@gmail.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Cc: Joe Perches <joe@perches.com>
    Link: http://lkml.kernel.org/r/20200122163852.124417-1-borneo.antonio@gmail.comSigned-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    7b18496c
checkpatch.pl 201 KB