fix pthread_mutexattr_gettype always return 0

Message ID c494dd3c4cc54544b14fc2f8ccea6266@tencent.com
State Dropped
Headers
Series fix pthread_mutexattr_gettype always return 0 |

Checks

Context Check Description
dj/TryBot-apply_patch fail Patch failed to apply to master at the time it was sent
dj/TryBot-32bit fail Patch series failed to apply

Commit Message

abushwang(王烁) March 2, 2023, 7:54 a.m. UTC
  From 03481285aff8d0d5a993f1969fb87afc946e2a91 Mon Sep 17 00:00:00 2001
From: Shuo Wang abushwang@tencent.com<mailto:abushwang@tencent.com>
Date: Thu, 2 Mar 2023 14:58:20 +0800
Subject: [PATCH] fix pthread_mutexattr_gettype always return 0

According to posix, pthread_mutexattr_gettype will return EINVAL
when the value specified by attr is invalid.
---
nptl/pthread_mutexattr_gettype.c | 3 +++
1 file changed, 3 insertions(+)
  

Comments

Carlos O'Donell March 2, 2023, 5:40 p.m. UTC | #1
On 3/2/23 02:54, abushwang(王烁) via Libc-alpha wrote:
> From 03481285aff8d0d5a993f1969fb87afc946e2a91 Mon Sep 17 00:00:00 2001
> From: Shuo Wang abushwang@tencent.com<mailto:abushwang@tencent.com>
> Date: Thu, 2 Mar 2023 14:58:20 +0800
> Subject: [PATCH] fix pthread_mutexattr_gettype always return 0
> 
> According to posix, pthread_mutexattr_gettype will return EINVAL
> when the value specified by attr is invalid.

Fails CI:
https://patchwork.sourceware.org/project/glibc/patch/c494dd3c4cc54544b14fc2f8ccea6266@tencent.com/

Patch fails to apply.

Please review the contribution checklist:
https://sourceware.org/glibc/wiki/Contribution%20checklist

> ---
> nptl/pthread_mutexattr_gettype.c | 3 +++
> 1 file changed, 3 insertions(+)
> 
> diff --git a/nptl/pthread_mutexattr_gettype.c b/nptl/pthread_mutexattr_gettype.c
> index 21e0a9e946..ee5ee71a88 100644
> --- a/nptl/pthread_mutexattr_gettype.c
> +++ b/nptl/pthread_mutexattr_gettype.c
> @@ -28,6 +28,9 @@ __pthread_mutexattr_gettype (const pthread_mutexattr_t *attr, int *kind)
>    *kind = (iattr->mutexkind & ~PTHREAD_MUTEXATTR_FLAG_BITS
>         & ~PTHREAD_MUTEX_NO_ELISION_NP);
> +  if (kind < PTHREAD_MUTEX_NORMAL || kind > PTHREAD_MUTEX_ADAPTIVE_NP)
> +    return EINVAL;
> +
>    return 0;
> }
> versioned_symbol (libc, __pthread_mutexattr_gettype,
> --
> 2.36.1
>
  

Patch

diff --git a/nptl/pthread_mutexattr_gettype.c b/nptl/pthread_mutexattr_gettype.c
index 21e0a9e946..ee5ee71a88 100644
--- a/nptl/pthread_mutexattr_gettype.c
+++ b/nptl/pthread_mutexattr_gettype.c
@@ -28,6 +28,9 @@  __pthread_mutexattr_gettype (const pthread_mutexattr_t *attr, int *kind)
   *kind = (iattr->mutexkind & ~PTHREAD_MUTEXATTR_FLAG_BITS
        & ~PTHREAD_MUTEX_NO_ELISION_NP);
+  if (kind < PTHREAD_MUTEX_NORMAL || kind > PTHREAD_MUTEX_ADAPTIVE_NP)
+    return EINVAL;
+
   return 0;
}
versioned_symbol (libc, __pthread_mutexattr_gettype,
--
2.36.1