fix incorrect allocation failure check in pthread_create
authorRich Felker <dalias@aerifal.cx>
Tue, 27 Sep 2011 16:18:44 +0000 (12:18 -0400)
committerRich Felker <dalias@aerifal.cx>
Tue, 27 Sep 2011 16:18:44 +0000 (12:18 -0400)
mmap returns MAP_FAILED not 0 because some idiot thought the ability
to mmap the null pointer page would be a good idea...

src/thread/pthread_create.c

index f7768d8..0189f02 100644 (file)
@@ -102,7 +102,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);
        }
        size += __pthread_tsd_size;
        map = mmap(0, size, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANON, -1, 0);
-       if (!map) return EAGAIN;
+       if (map == MAP_FAILED) return EAGAIN;
        if (guard) mprotect(map, guard, PROT_NONE);
 
        tsd = map + size - __pthread_tsd_size;
        if (guard) mprotect(map, guard, PROT_NONE);
 
        tsd = map + size - __pthread_tsd_size;