Re: [PATCH] checkpatch: Do not complain about positive return values starting with EPOLL

From: Joe Perches
Date: Mon Jun 21 2021 - 11:57:41 EST


On Sun, 2021-06-20 at 08:45 -0700, Guenter Roeck wrote:
> checkpatch complains about positive return values of poll functions.
> Example:
>
> WARNING: return of an errno should typically be negative (ie: return -EPOLLIN)
> + return EPOLLIN;
>
> Poll functions return positive values. The defines for the return values
> of poll functions all start with EPOLL, resulting in a number of false
> positives. An often used workaround is to assign poll function return
> values to variables and returning that variable, but that is a less than
> perfect solution.
>
> There is no error definition which starts with EPOLL, so it is safe to omit
> the warning for return values starting with EPOLL.

Seems OK but

> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
[]
> @@ -5458,7 +5458,8 @@ sub process {
>  # Return of what appears to be an errno should normally be negative
>   if ($sline =~ /\breturn(?:\s*\(+\s*|\s+)(E[A-Z]+)(?:\s*\)+\s*|\s*)[;:,]/) {
>   my $name = $1;
> - if ($name ne 'EOF' && $name ne 'ERROR') {
> + if ($name ne 'EOF' && $name ne 'ERROR' &&
> + rindex($name, 'EPOLL', 0) != 0) {

rindex is a bit harder to read so my preference would be for the simpler:

if ($name ne 'EOF' && $name ne 'ERROR' && $name !~ /^EPOLL/) {

>   WARN("USE_NEGATIVE_ERRNO",
>   "return of an errno should typically be negative (ie: return -$1)\n" . $herecurr);
>   }