[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[hurd, commited] htl: Make pthread_[gs]etspecific not check for key vali
From: |
Samuel Thibault |
Subject: |
[hurd, commited] htl: Make pthread_[gs]etspecific not check for key validity |
Date: |
Mon, 14 Feb 2022 19:29:34 +0100 |
Since __pthread_key_create might be concurrently reallocating the
__pthread_key_destructors array, it's not safe to access it without the
mutex held. Posix explicitly says we are allowed to prefer performance
over error detection.
---
sysdeps/htl/pt-getspecific.c | 3 +--
sysdeps/htl/pt-setspecific.c | 3 +--
2 files changed, 2 insertions(+), 4 deletions(-)
diff --git a/sysdeps/htl/pt-getspecific.c b/sysdeps/htl/pt-getspecific.c
index af1161206a..a9dfd8a775 100644
--- a/sysdeps/htl/pt-getspecific.c
+++ b/sysdeps/htl/pt-getspecific.c
@@ -25,8 +25,7 @@ __pthread_getspecific (pthread_key_t key)
{
struct __pthread *self;
- if (key < 0 || key >= __pthread_key_count
- || __pthread_key_destructors[key] == PTHREAD_KEY_INVALID)
+ if (key < 0 || key >= __pthread_key_count)
return NULL;
self = _pthread_self ();
diff --git a/sysdeps/htl/pt-setspecific.c b/sysdeps/htl/pt-setspecific.c
index 982d25d012..d201416d5d 100644
--- a/sysdeps/htl/pt-setspecific.c
+++ b/sysdeps/htl/pt-setspecific.c
@@ -25,8 +25,7 @@ __pthread_setspecific (pthread_key_t key, const void *value)
{
struct __pthread *self = _pthread_self ();
- if (key < 0 || key >= __pthread_key_count
- || __pthread_key_destructors[key] == PTHREAD_KEY_INVALID)
+ if (key < 0 || key >= __pthread_key_count)
return EINVAL;
if (key >= self->thread_specifics_size)
--
2.34.1
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [hurd, commited] htl: Make pthread_[gs]etspecific not check for key validity,
Samuel Thibault <=