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

[commits] r11012 - in /fsf/trunk/libc: ChangeLog elf/dl-sysdep.c sysdeps/mach/hurd/sendmsg.c



Author: eglibc
Date: Wed Jul 21 00:02:58 2010
New Revision: 11012

Log:
Import glibc-mainline for 2010-07-21

Modified:
    fsf/trunk/libc/ChangeLog
    fsf/trunk/libc/elf/dl-sysdep.c
    fsf/trunk/libc/sysdeps/mach/hurd/sendmsg.c

Modified: fsf/trunk/libc/ChangeLog
==============================================================================
--- fsf/trunk/libc/ChangeLog (original)
+++ fsf/trunk/libc/ChangeLog Wed Jul 21 00:02:58 2010
@@ -1,3 +1,14 @@
+2010-07-20  Roland McGrath  <roland@xxxxxxxxxx>
+
+	* elf/dl-sysdep.c (_dl_important_hwcaps): Add dsocaps mask to
+	dl_hwcap_mask as well as dl_hwcap.  Without this, dsocaps matching in
+	ld.so.cache was broken.  With it, there is no way to disable dsocaps
+	like LD_HWCAP_MASK can disable hwcaps.
+
+2010-06-02  Emilio Pozuelo Monfort  <pochu27@xxxxxxxxx>
+
+	* sysdeps/mach/hurd/sendmsg.c (__libc_sendmsg): Fix memory leaks.
+
 2010-07-16  Ulrich Drepper  <drepper@xxxxxxxxxx>
 
 	* sysdeps/x86_64/multiarch/strstr.c: Rewrite to avoid indirect function

Modified: fsf/trunk/libc/elf/dl-sysdep.c
==============================================================================
--- fsf/trunk/libc/elf/dl-sysdep.c (original)
+++ fsf/trunk/libc/elf/dl-sysdep.c Wed Jul 21 00:02:58 2010
@@ -425,6 +425,11 @@
     {
       const ElfW(Word) mask = ((const ElfW(Word) *) dsocaps)[-1];
       GLRO(dl_hwcap) |= (uint64_t) mask << _DL_FIRST_EXTRA;
+      /* Note that we add the dsocaps to the set already chosen by the
+	 LD_HWCAP_MASK environment variable (or default HWCAP_IMPORTANT).
+	 So there is no way to request ignoring an OS-supplied dsocap
+	 string and bit like you can ignore an OS-supplied HWCAP bit.  */
+      GLRO(dl_hwcap_mask) |= (uint64_t) mask << _DL_FIRST_EXTRA;
       size_t len;
       for (const char *p = dsocaps; p < dsocaps + dsocapslen; p += len + 1)
 	{

Modified: fsf/trunk/libc/sysdeps/mach/hurd/sendmsg.c
==============================================================================
--- fsf/trunk/libc/sysdeps/mach/hurd/sendmsg.c (original)
+++ fsf/trunk/libc/sysdeps/mach/hurd/sendmsg.c Wed Jul 21 00:02:58 2010
@@ -109,14 +109,22 @@
 	     and talk to it with the ifsock protocol.  */
 	  file_t file = __file_name_lookup (addr->sun_path, 0, 0);
 	  if (file == MACH_PORT_NULL)
-	    return -1;
+	    {
+	      if (dealloc)
+		__vm_deallocate (__mach_task_self (), data.addr, len);
+	      return -1;
+	    }
 	  err = __ifsock_getsockaddr (file, &aport);
 	  __mach_port_deallocate (__mach_task_self (), file);
 	  if (err == MIG_BAD_ID || err == EOPNOTSUPP)
 	    /* The file did not grok the ifsock protocol.  */
 	    err = ENOTSOCK;
 	  if (err)
-	    return __hurd_fail (err);
+	    {
+	      if (dealloc)
+		__vm_deallocate (__mach_task_self (), data.addr, len);
+	      return __hurd_fail (err);
+	    }
 	}
       else
 	err = EIEIO;