Module Name:    src
Committed By:   joerg
Date:           Sun Dec 15 20:25:25 UTC 2019

Modified Files:
        src/lib/libc/gen: sysconf.c
        src/sys/kern: uipc_sem.c

Log Message:
PR 54619: Remove semaphore limit introduce as part of GSoC 2016 with
_SC_SEM_NSEMS_MAX. Report no limit for getconf(3). The ressource is
naturally limited by the backing file descriptor, so no separate limit
is necessary. Keep the accounting for debugging as it is part of the
sysctl ABI exposed by the kernel.


To generate a diff of this commit:
cvs rdiff -u -r1.42 -r1.43 src/lib/libc/gen/sysconf.c
cvs rdiff -u -r1.55 -r1.56 src/sys/kern/uipc_sem.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libc/gen/sysconf.c
diff -u src/lib/libc/gen/sysconf.c:1.42 src/lib/libc/gen/sysconf.c:1.43
--- src/lib/libc/gen/sysconf.c:1.42	Wed Oct 16 20:43:18 2019
+++ src/lib/libc/gen/sysconf.c	Sun Dec 15 20:25:25 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: sysconf.c,v 1.42 2019/10/16 20:43:18 maya Exp $	*/
+/*	$NetBSD: sysconf.c,v 1.43 2019/12/15 20:25:25 joerg Exp $	*/
 
 /*-
  * Copyright (c) 1993
@@ -37,7 +37,7 @@
 #if 0
 static char sccsid[] = "@(#)sysconf.c	8.2 (Berkeley) 3/20/94";
 #else
-__RCSID("$NetBSD: sysconf.c,v 1.42 2019/10/16 20:43:18 maya Exp $");
+__RCSID("$NetBSD: sysconf.c,v 1.43 2019/12/15 20:25:25 joerg Exp $");
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -424,7 +424,7 @@ yesno:		if (sysctl(mib, mib_len, &value,
 	case _SC_TIMER_MAX:
 		return _POSIX_TIMER_MAX;
 	case _SC_SEM_NSEMS_MAX:
-		return _POSIX_SEM_NSEMS_MAX;
+		return LONG_MAX;
 	case _SC_CPUTIME:
 		return _POSIX_CPUTIME;
 	case _SC_THREAD_CPUTIME:

Index: src/sys/kern/uipc_sem.c
diff -u src/sys/kern/uipc_sem.c:1.55 src/sys/kern/uipc_sem.c:1.56
--- src/sys/kern/uipc_sem.c:1.55	Fri Mar  1 03:03:19 2019
+++ src/sys/kern/uipc_sem.c	Sun Dec 15 20:25:25 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: uipc_sem.c,v 1.55 2019/03/01 03:03:19 christos Exp $	*/
+/*	$NetBSD: uipc_sem.c,v 1.56 2019/12/15 20:25:25 joerg Exp $	*/
 
 /*-
  * Copyright (c) 2011, 2019 The NetBSD Foundation, Inc.
@@ -60,7 +60,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uipc_sem.c,v 1.55 2019/03/01 03:03:19 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uipc_sem.c,v 1.56 2019/12/15 20:25:25 joerg Exp $");
 
 #include <sys/param.h>
 #include <sys/kernel.h>
@@ -92,7 +92,6 @@ MODULE(MODULE_CLASS_MISC, ksem, NULL);
 
 #define	SEM_MAX_NAMELEN		NAME_MAX
 
-#define	SEM_NSEMS_MAX		256
 #define	KS_UNLINKED		0x01
 
 static kmutex_t		ksem_lock	__cacheline_aligned;
@@ -468,14 +467,7 @@ ksem_create(lwp_t *l, const char *name, 
 		len = 0;
 	}
 
-	u_int cnt;
-	uid_t uid = kauth_cred_getuid(l->l_cred);
-	if ((cnt = chgsemcnt(uid, 1)) > SEM_NSEMS_MAX) {
-		chgsemcnt(uid, -1);
-		if (kname != NULL)
-			kmem_free(kname, len);
-		return ENOSPC;
-	}
+	chgsemcnt(kauth_cred_getuid(l->l_cred), 1);
 
 	ks = kmem_zalloc(sizeof(ksem_t), KM_SLEEP);
 	mutex_init(&ks->ks_lock, MUTEX_DEFAULT, IPL_NONE);

Reply via email to