Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 13 Dec 2002 09:28:44 -0800
From:      Joe Kelsey <joek@mail.flyingcroc.net>
To:        freebsd-current@freebsd.org
Subject:   Re: Posix Semaphores in -CURRENT
Message-ID:  <3DFA18CC.8090205@mail.flyingcroc.net>
References:  <3DF8F08E.8050809@mail.flyingcroc.net> <3DFA0771.BDFC87A8@mindspring.com> <3DFA0DAC.2070801@mail.flyingcroc.net> <3DFA1251.C4755C5B@mindspring.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Terry Lambert wrote:
> Get me the exact file you are concerned about, and I will stare
> at it with you.  I think, though, that if there is a problem, it's
> just that you are catching things in mid-implementation (POSIX
> semaphores were supported in the other scope, but not system,
> until very recently; there's even magic POSIX manifests that tell
> you not to use them).

src/sys/kern/uipc_sem.c, version 1.3:
...
#define SEM_MAX_NAMELEN	14
...
static int
sem_create(td, name, ksret, mode, value)
...
	if (value > SEM_VALUE_MAX)
		return (EINVAL);
	ret = malloc(sizeof(*ret), M_SEM, M_WAITOK | M_ZERO);
	if (name != NULL) {
		len = strlen(name);
		if (len > SEM_MAX_NAMELEN) {
			free(ret, M_SEM);
			return (ENAMETOOLONG);
		}
		/* name must start with a '/' but not contain one. */
		if (*name != '/' || len < 2 || index(name + 1, '/') != NULL) {
			free(ret, M_SEM);
			return (EINVAL);
		}

The comment makes it look like this code allows a 14-character named 
semaphore which *must* start with a slash and cannot contain embedded 
slashes.  In other words, it does *not* conform to pathname semantics.

If some other part of the system already verifies that the named 
semaphore is actually an empty directory entry, then why is there a name 
length restriction and why is there a '/' check?

If this is a bug, I will happily submit a PR.  I wanted some feedback 
before doing so.  I am interested in playing with the semantics of posix 
semaphores.  It looks to me as though they could be implemented more 
resource-efficiently than SVID semaphores and really do have different 
semantics.  I really want to try to understand what will and won't be 
released in 5.0.  How will I enable these for testing/use and will they 
work in a portable way?  The only way to answer those questions right 
now is to examine the source.  I am trying to understand the source, 
especially in how it may or may not restrict use of semaphores.

/Joe


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3DFA18CC.8090205>