cut out a syscall on thread creation in the case where guard size is 0
authorRich Felker <dalias@aerifal.cx>
Wed, 16 Mar 2011 15:36:21 +0000 (11:36 -0400)
committerRich Felker <dalias@aerifal.cx>
Wed, 16 Mar 2011 15:36:21 +0000 (11:36 -0400)
src/thread/pthread_create.c

index 9b6385f59ca8be0a23d259ba560508a8b6c58d42..7494a486b2b3a4d4b4fee7c05d64538cb51e9eed 100644 (file)
@@ -195,7 +195,7 @@ int pthread_create(pthread_t *res, const pthread_attr_t *attr, void *(*entry)(vo
        size += __pthread_tsd_size;
        map = mmap(0, size, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANON, -1, 0);
        if (!map) return EAGAIN;
-       mprotect(map, guard, PROT_NONE);
+       if (guard) mprotect(map, guard, PROT_NONE);
 
        tsd = map + size - __pthread_tsd_size;
        new = (void *)(tsd - sizeof *new - PAGE_SIZE%sizeof *new);