Module Name:    src
Committed By:   riastradh
Date:           Tue Nov 28 02:54:33 UTC 2023

Modified Files:
        src/lib/libpthread: pthread.c
        src/tests/lib/libpthread: t_stack.c

Log Message:
pthread: Don't adjust user-allocated stack addresses by guardsize.

PR lib/57721

XXX pullup-10
XXX pullup-9
XXX pullup-8


To generate a diff of this commit:
cvs rdiff -u -r1.183 -r1.184 src/lib/libpthread/pthread.c
cvs rdiff -u -r1.5 -r1.6 src/tests/lib/libpthread/t_stack.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libpthread/pthread.c
diff -u src/lib/libpthread/pthread.c:1.183 src/lib/libpthread/pthread.c:1.184
--- src/lib/libpthread/pthread.c:1.183	Thu Sep  7 19:59:20 2023
+++ src/lib/libpthread/pthread.c	Tue Nov 28 02:54:33 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: pthread.c,v 1.183 2023/09/07 19:59:20 ad Exp $	*/
+/*	$NetBSD: pthread.c,v 1.184 2023/11/28 02:54:33 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2001, 2002, 2003, 2006, 2007, 2008, 2020
@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__RCSID("$NetBSD: pthread.c,v 1.183 2023/09/07 19:59:20 ad Exp $");
+__RCSID("$NetBSD: pthread.c,v 1.184 2023/11/28 02:54:33 riastradh Exp $");
 
 #define	__EXPOSE_STACK	1
 
@@ -331,7 +331,10 @@ pthread__getstack(pthread_t newthread, c
 
 	if (attr != NULL) {
 		pthread_attr_getstack(attr, &stackbase, &stacksize);
-		pthread_attr_getguardsize(attr, &guardsize);
+		if (stackbase == NULL)
+			pthread_attr_getguardsize(attr, &guardsize);
+		else
+			guardsize = 0;
 	} else {
 		stackbase = NULL;
 		stacksize = 0;

Index: src/tests/lib/libpthread/t_stack.c
diff -u src/tests/lib/libpthread/t_stack.c:1.5 src/tests/lib/libpthread/t_stack.c:1.6
--- src/tests/lib/libpthread/t_stack.c:1.5	Tue Nov 28 00:27:05 2023
+++ src/tests/lib/libpthread/t_stack.c	Tue Nov 28 02:54:33 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: t_stack.c,v 1.5 2023/11/28 00:27:05 riastradh Exp $	*/
+/*	$NetBSD: t_stack.c,v 1.6 2023/11/28 02:54:33 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2023 The NetBSD Foundation, Inc.
@@ -29,7 +29,7 @@
 #define	_KMEMUSER		/* __MACHINE_STACK_GROWS_UP */
 
 #include <sys/cdefs.h>
-__RCSID("$NetBSD: t_stack.c,v 1.5 2023/11/28 00:27:05 riastradh Exp $");
+__RCSID("$NetBSD: t_stack.c,v 1.6 2023/11/28 02:54:33 riastradh Exp $");
 
 #include <sys/mman.h>
 #include <sys/param.h>
@@ -399,15 +399,12 @@ ATF_TC_BODY(stack1, tc)
 	 */
 	init(getnondefaultstacksize());
 
-
 	/*
 	 * Create a thread with user-allocated stack of a non-default
 	 * size to verify the stack size and access.
 	 */
 	RZ(pthread_attr_init(&attr));
 	RZ(pthread_attr_setstack(&attr, C->addr, C->size));
-	atf_tc_expect_fail("PR lib/57721: pthread_attr_setstack"
-	    " incorrectly adjusts address as if for guard page");
 	RZ(pthread_create(&t, &attr, &checkaddraccessthread, C));
 	RZ(pthread_join(t, NULL));
 
@@ -464,8 +461,6 @@ ATF_TC_BODY(stack2, tc)
 	 */
 	RZ(pthread_attr_init(&attr2));
 	RZ(pthread_attr_setstack(&attr2, C->addr, C->size));
-	atf_tc_expect_fail("PR lib/57721: pthread_attr_setstack"
-	    " incorrectly adjusts address as if for guard page");
 	RZ(pthread_create(&t2, &attr2, &checkaddraccessthread, C));
 	ATF_CHECK_EQ_MSG(t, t2, "t=%p t2=%p", t, t2); /* NetBSD recycles */
 	RZ(pthread_join(t2, NULL));

Reply via email to