svn commit: r246894 - head/lib/libc/gen
David Xu
davidxu at FreeBSD.org
Sun Feb 17 02:52:43 UTC 2013
Author: davidxu
Date: Sun Feb 17 02:52:42 2013
New Revision: 246894
URL: http://svnweb.freebsd.org/changeset/base/246894
Log:
Make more code be protected by internal mutex, and now it is fork-safe, in
error case, the file exclusive lock is now released as soon as possible,
in previous code, child process can still hold the exclusive lock.
Modified:
head/lib/libc/gen/sem_new.c
Modified: head/lib/libc/gen/sem_new.c
==============================================================================
--- head/lib/libc/gen/sem_new.c Sun Feb 17 02:15:19 2013 (r246893)
+++ head/lib/libc/gen/sem_new.c Sun Feb 17 02:52:42 2013 (r246894)
@@ -229,18 +229,18 @@ _sem_open(const char *name, int flags, .
ni->open_count = 1;
ni->sem = sem;
LIST_INSERT_HEAD(&sem_list, ni, next);
- _pthread_mutex_unlock(&sem_llock);
_close(fd);
+ _pthread_mutex_unlock(&sem_llock);
return (sem);
error:
errsave = errno;
- _pthread_mutex_unlock(&sem_llock);
if (fd != -1)
_close(fd);
if (sem != NULL)
munmap(sem, sizeof(sem_t));
free(ni);
+ _pthread_mutex_unlock(&sem_llock);
errno = errsave;
return (SEM_FAILED);
}
More information about the svn-src-head
mailing list