[PATCH v3] checkpatch.pl: New instances of ENOSYS are errors

From: Andy Lutomirski
Date: Fri Aug 22 2014 - 14:05:36 EST


ENOSYS means that a nonexistent system call was called. We have a
bad habit of using it for things like invalid operations on
otherwise valid syscalls. We should avoid this in new code.

Signed-off-by: Andy Lutomirski <luto@xxxxxxxxxxxxxx>
---

Pervasive incorrect usage of ENOSYS came up at the kernel summit ABI
review discussion. Let's see if checkpatch can help.

I'll submit a separate patch for include/uapi/asm-generic/errno.h.

Changes from v2:
- Reduce severity to WARN.
- Remove unnecessary clarification.
- Rebase onto Linus' tree instead of v3.16.

Changes from v1:
- Moved later so that it won't warn on context lines.
- Use $herecur.
- Improve regex pattern.

scripts/checkpatch.pl | 8 ++++++++
1 file changed, 8 insertions(+)

diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 31a731e..448d075 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -3214,6 +3214,14 @@ sub process {
"Prefer dev_$level(... to dev_printk(KERN_$orig, ...\n" . $herecurr);
}

+# ENOSYS means "bad syscall nr" and nothing else. This will have a small
+# number of false positives, but assembly files are not checked, so at
+# least the arch entry code will not trigger this warning.
+ if ($line =~ /\bENOSYS\b/) {
+ WARN("ENOSYS",
+ "ENOSYS means 'invalid syscall nr' and nothing else\n" . $herecurr);
+ }
+
# function brace can't be on same line, except for #defines of do while,
# or if closed on same line
if (($line=~/$Type\s*$Ident\(.*\).*\s*{/) and
--
1.9.3

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/