[lkml]   [2014]   [Aug]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
Patch in this message
Subject[PATCH v3] New instances of ENOSYS are errors
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 <>

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/ | 8 ++++++++
1 file changed, 8 insertions(+)

diff --git a/scripts/ b/scripts/
index 31a731e..448d075 100755
--- a/scripts/
+++ b/scripts/
@@ -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/) {
+ "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

 \ /
  Last update: 2014-08-22 20:41    [W:0.051 / U:9.556 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site