[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commits] r22913 - in /fsf/trunk/libc: ./ nptl/ nptl/sysdeps/unix/sysv/linux/ nss/ sysdeps/posix/



Author: eglibc
Date: Tue Apr 23 00:01:49 2013
New Revision: 22913

Log:
Import glibc-mainline for 2013-04-23

Modified:
    fsf/trunk/libc/ChangeLog
    fsf/trunk/libc/nptl/ChangeLog
    fsf/trunk/libc/nptl/pthreadP.h
    fsf/trunk/libc/nptl/pthread_attr_setschedparam.c
    fsf/trunk/libc/nptl/pthread_attr_setschedpolicy.c
    fsf/trunk/libc/nptl/pthread_attr_setstack.c
    fsf/trunk/libc/nptl/pthread_attr_setstacksize.c
    fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/pthread_attr_setaffinity.c
    fsf/trunk/libc/nss/getent.c
    fsf/trunk/libc/sysdeps/posix/getaddrinfo.c

Modified: fsf/trunk/libc/ChangeLog
==============================================================================
--- fsf/trunk/libc/ChangeLog (original)
+++ fsf/trunk/libc/ChangeLog Tue Apr 23 00:01:49 2013
@@ -1,3 +1,12 @@
+2013-04-22  Jan-Benedict Glaw  <jbglaw@xxxxxxxxxxx>
+
+	* nss/getent.c (shadow_keys): Call endspent, not endpwent.
+
+2013-04-22  Siddhesh Poyarekar  <siddhesh@xxxxxxxxxx>
+
+	* sysdeps/posix/getaddrinfo.c (getaddrinfo): Compute results
+	size just once.
+
 2013-04-21  David S. Miller  <davem@xxxxxxxxxxxxx>
 
 	* po/ru.po: Update Russion translation from translation project.

Modified: fsf/trunk/libc/nptl/ChangeLog
==============================================================================
--- fsf/trunk/libc/nptl/ChangeLog (original)
+++ fsf/trunk/libc/nptl/ChangeLog Tue Apr 23 00:01:49 2013
@@ -1,3 +1,22 @@
+2013-04-22  Siddhesh Poyarekar  <siddhesh@xxxxxxxxxx>
+
+	* pthreadP.h (check_sched_policy_attr): New inline function.
+	(check_sched_priority_attr): Likewise.
+	(check_stacksize_attr): Likewise.
+	(__kernel_cpumask_size, __determine_cpumask_size): Declare
+	extern.
+	(check_cpuset_attr): New inline function.
+	* pthread_attr_setschedparam (__pthread_attr_setschedparam):
+	Use check_sched_priority_attr.
+	* pthread_attr_setschedpolicy.c
+	(__pthread_attr_setschedpolicy): Use check_sched_policy_attr.
+	* pthread_attr_setstack.c (__pthread_attr_setstack): Use
+	check_stacksize_attr.
+	* pthread_attr_setstacksize.c (__pthread_attr_setstacksize):
+	Likewise.
+	* sysdeps/unix/sysv/linux/pthread_attr_setaffinity.c
+	(__pthread_attr_setaffinity_new): Use check_cpuset_attr.
+
 2013-04-11  Andreas Schwab  <schwab@xxxxxxx>
 
 	* sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S

Modified: fsf/trunk/libc/nptl/pthreadP.h
==============================================================================
--- fsf/trunk/libc/nptl/pthreadP.h (original)
+++ fsf/trunk/libc/nptl/pthreadP.h Tue Apr 23 00:01:49 2013
@@ -31,7 +31,7 @@
 #include <pthread-functions.h>
 #include <atomic.h>
 #include <kernel-features.h>
-
+#include <errno.h>
 
 /* Atomic operations on TLS memory.  */
 #ifndef THREAD_ATOMIC_CMPXCHG_VAL
@@ -589,4 +589,66 @@
 # define USE_REQUEUE_PI(mut) 0
 #endif
 
+/* Returns 0 if POL is a valid scheduling policy.  */
+static inline int
+check_sched_policy_attr (int pol)
+{
+  if (pol == SCHED_OTHER || pol == SCHED_FIFO || pol == SCHED_RR)
+    return 0;
+
+  return EINVAL;
+}
+
+/* Returns 0 if PR is within the accepted range of priority values for
+   the scheduling policy POL or EINVAL otherwise.  */
+static inline int
+check_sched_priority_attr (int pr, int pol)
+{
+  int min = __sched_get_priority_min (pol);
+  int max = __sched_get_priority_max (pol);
+
+  if (min >= 0 && max >= 0 && pr >= min && pr <= max)
+    return 0;
+
+  return EINVAL;
+}
+
+/* Returns 0 if ST is a valid stack size for a thread stack and EINVAL
+   otherwise.  */
+static inline int
+check_stacksize_attr (size_t st)
+{
+  if (st >= PTHREAD_STACK_MIN)
+    return 0;
+
+  return EINVAL;
+}
+
+/* Defined in pthread_setaffinity.c.  */
+extern size_t __kernel_cpumask_size attribute_hidden;
+extern int __determine_cpumask_size (pid_t tid);
+
+/* Returns 0 if CS and SZ are valid values for the cpuset and cpuset size
+   respectively.  Otherwise it returns an error number.  */
+static inline int
+check_cpuset_attr (const cpu_set_t *cs, const size_t sz)
+{
+  if (__kernel_cpumask_size == 0)
+    {
+      int res = __determine_cpumask_size (THREAD_SELF->tid);
+      if (res)
+	return res;
+    }
+
+  /* Check whether the new bitmask has any bit set beyond the
+     last one the kernel accepts.  */
+  for (size_t cnt = __kernel_cpumask_size; cnt < sz; ++cnt)
+    if (((char *) cs)[cnt] != '\0')
+      /* Found a nonzero byte.  This means the user request cannot be
+	 fulfilled.  */
+      return EINVAL;
+
+  return 0;
+}
+
 #endif	/* pthreadP.h */

Modified: fsf/trunk/libc/nptl/pthread_attr_setschedparam.c
==============================================================================
--- fsf/trunk/libc/nptl/pthread_attr_setschedparam.c (original)
+++ fsf/trunk/libc/nptl/pthread_attr_setschedparam.c Tue Apr 23 00:01:49 2013
@@ -30,11 +30,10 @@
   assert (sizeof (*attr) >= sizeof (struct pthread_attr));
   struct pthread_attr *iattr = (struct pthread_attr *) attr;
 
-  int min = sched_get_priority_min (iattr->schedpolicy);
-  int max = sched_get_priority_max (iattr->schedpolicy);
-  if (min == -1 || max == -1
-      || param->sched_priority > max || param->sched_priority < min)
-    return EINVAL;
+  int ret = check_sched_priority_attr (param->sched_priority,
+				       iattr->schedpolicy);
+  if (ret)
+    return ret;
 
   /* Copy the new values.  */
   memcpy (&iattr->schedparam, param, sizeof (struct sched_param));

Modified: fsf/trunk/libc/nptl/pthread_attr_setschedpolicy.c
==============================================================================
--- fsf/trunk/libc/nptl/pthread_attr_setschedpolicy.c (original)
+++ fsf/trunk/libc/nptl/pthread_attr_setschedpolicy.c Tue Apr 23 00:01:49 2013
@@ -32,8 +32,9 @@
   iattr = (struct pthread_attr *) attr;
 
   /* Catch invalid values.  */
-  if (policy != SCHED_OTHER && policy != SCHED_FIFO && policy != SCHED_RR)
-    return EINVAL;
+  int ret = check_sched_policy_attr (policy);
+  if (ret)
+    return ret;
 
   /* Store the new values.  */
   iattr->schedpolicy = policy;

Modified: fsf/trunk/libc/nptl/pthread_attr_setstack.c
==============================================================================
--- fsf/trunk/libc/nptl/pthread_attr_setstack.c (original)
+++ fsf/trunk/libc/nptl/pthread_attr_setstack.c Tue Apr 23 00:01:49 2013
@@ -39,8 +39,9 @@
   iattr = (struct pthread_attr *) attr;
 
   /* Catch invalid sizes.  */
-  if (stacksize < PTHREAD_STACK_MIN)
-    return EINVAL;
+  int ret = check_stacksize_attr (stacksize);
+  if (ret)
+    return ret;
 
 #ifdef EXTRA_PARAM_CHECKS
   EXTRA_PARAM_CHECKS;

Modified: fsf/trunk/libc/nptl/pthread_attr_setstacksize.c
==============================================================================
--- fsf/trunk/libc/nptl/pthread_attr_setstacksize.c (original)
+++ fsf/trunk/libc/nptl/pthread_attr_setstacksize.c Tue Apr 23 00:01:49 2013
@@ -37,8 +37,9 @@
   iattr = (struct pthread_attr *) attr;
 
   /* Catch invalid sizes.  */
-  if (stacksize < PTHREAD_STACK_MIN)
-    return EINVAL;
+  int ret = check_stacksize_attr (stacksize);
+  if (ret)
+    return ret;
 
   iattr->stacksize = stacksize;
 

Modified: fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/pthread_attr_setaffinity.c
==============================================================================
--- fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/pthread_attr_setaffinity.c (original)
+++ fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/pthread_attr_setaffinity.c Tue Apr 23 00:01:49 2013
@@ -25,9 +25,6 @@
 #include <shlib-compat.h>
 
 
-/* Defined in pthread_setaffinity.c.  */
-extern size_t __kernel_cpumask_size attribute_hidden;
-extern int __determine_cpumask_size (pid_t tid);
 
 
 int
@@ -47,21 +44,10 @@
     }
   else
     {
-      if (__kernel_cpumask_size == 0)
-	{
-	  int res = __determine_cpumask_size (THREAD_SELF->tid);
-	  if (res != 0)
-	    /* Some serious problem.  */
-	    return res;
-	}
+      int ret = check_cpuset_attr (cpuset, cpusetsize);
 
-      /* Check whether the new bitmask has any bit set beyond the
-	 last one the kernel accepts.  */
-      for (size_t cnt = __kernel_cpumask_size; cnt < cpusetsize; ++cnt)
-	if (((char *) cpuset)[cnt] != '\0')
-	  /* Found a nonzero byte.  This means the user request cannot be
-	     fulfilled.  */
-	  return EINVAL;
+      if (ret)
+        return ret;
 
       if (iattr->cpusetsize != cpusetsize)
 	{

Modified: fsf/trunk/libc/nss/getent.c
==============================================================================
--- fsf/trunk/libc/nss/getent.c (original)
+++ fsf/trunk/libc/nss/getent.c Tue Apr 23 00:01:49 2013
@@ -841,7 +841,7 @@
       setspent ();
       while ((sp = getspent ()) != NULL)
 	print_shadow (sp);
-      endpwent ();
+      endspent ();
       return result;
     }
 

Modified: fsf/trunk/libc/sysdeps/posix/getaddrinfo.c
==============================================================================
--- fsf/trunk/libc/sysdeps/posix/getaddrinfo.c (original)
+++ fsf/trunk/libc/sysdeps/posix/getaddrinfo.c Tue Apr 23 00:01:49 2013
@@ -2495,12 +2495,13 @@
       struct addrinfo *last = NULL;
       char *canonname = NULL;
       bool malloc_results;
+      size_t alloc_size = nresults * (sizeof (*results) + sizeof (size_t));
 
       malloc_results
-	= !__libc_use_alloca (nresults * (sizeof (*results) + sizeof (size_t)));
+	= !__libc_use_alloca (alloc_size);
       if (malloc_results)
 	{
-	  results = malloc (nresults * (sizeof (*results) + sizeof (size_t)));
+	  results = malloc (alloc_size);
 	  if (results == NULL)
 	    {
 	      __free_in6ai (in6ai);
@@ -2508,7 +2509,7 @@
 	    }
 	}
       else
-	results = alloca (nresults * (sizeof (*results) + sizeof (size_t)));
+	results = alloca (alloc_size);
       order = (size_t *) (results + nresults);
 
       /* Now we definitely need the interface information.  */

_______________________________________________
Commits mailing list
Commits@xxxxxxxxxx
http://eglibc.org/cgi-bin/mailman/listinfo/commits