svn commit: r355611 - head/sys/kern

Andriy Gapon avg at FreeBSD.org
Wed Dec 11 15:52:30 UTC 2019


Author: avg
Date: Wed Dec 11 15:52:29 2019
New Revision: 355611
URL: https://svnweb.freebsd.org/changeset/base/355611

Log:
  add a sanity check to the system call registration code
  
  A system call number should be at least reserved.
  We do not expect an attempt to register a fixed number system call
  when nothing at all is known about it.
  
  MFC after:	3 weeks
  Sponsored by:	Panzura

Modified:
  head/sys/kern/kern_syscalls.c

Modified: head/sys/kern/kern_syscalls.c
==============================================================================
--- head/sys/kern/kern_syscalls.c	Wed Dec 11 15:15:21 2019	(r355610)
+++ head/sys/kern/kern_syscalls.c	Wed Dec 11 15:52:29 2019	(r355611)
@@ -120,11 +120,14 @@ kern_syscall_register(struct sysent *sysents, int *off
 		if (i == SYS_MAXSYSCALL)
 			return (ENFILE);
 		*offset = i;
-	} else if (*offset < 0 || *offset >= SYS_MAXSYSCALL)
+	} else if (*offset < 0 || *offset >= SYS_MAXSYSCALL) {
 		return (EINVAL);
-	else if (sysents[*offset].sy_call != (sy_call_t *)lkmnosys &&
-	    sysents[*offset].sy_call != (sy_call_t *)lkmressys)
+	} else if (sysents[*offset].sy_call != (sy_call_t *)lkmnosys &&
+	    sysents[*offset].sy_call != (sy_call_t *)lkmressys) {
+		KASSERT(sysents[*offset].sy_call != NULL,
+		    ("undefined syscall %d", *offset));
 		return (EEXIST);
+	}
 
 	KASSERT(sysents[*offset].sy_thrcnt == SY_THR_ABSENT,
 	    ("dynamic syscall is not protected"));


More information about the svn-src-head mailing list