Update.
authorUlrich Drepper <drepper@redhat.com>
Thu, 27 Feb 2003 08:01:47 +0000 (08:01 +0000)
committerUlrich Drepper <drepper@redhat.com>
Thu, 27 Feb 2003 08:01:47 +0000 (08:01 +0000)
2003-02-27  Ulrich Drepper  <drepper@redhat.com>

* sunrpc/svc_udp.c (svcudp_recv): Remove all control messages
except the PKTINFO.  Reset interface in PKTINFO.

* elf/elf.h: Add new R_PPC64_* relocs for TLS.
* elf/tls-macros.h [__powerpc64__] (TLS_LE, TLS_IE, TLS_LD, TLS_GD):
Define.
* sysdeps/powerpc/elf/libc-start.c (__libc_start_main):

ChangeLog
nptl/Makefile
nptl/tst-rwlock10.c [new file with mode: 0644]
nptl/tst-rwlock11.c [new file with mode: 0644]
nptl/tst-rwlock8.c
nptl/tst-rwlock9.c
sunrpc/svc_udp.c

index ff2f042..b39b087 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,14 +1,19 @@
+2003-02-27  Ulrich Drepper  <drepper@redhat.com>
+
+       * sunrpc/svc_udp.c (svcudp_recv): Remove all control messages
+       except the PKTINFO.  Reset interface in PKTINFO.
+
 2003-02-25  Steven Munroe  <sjmunroe@us.ibm.com>
 
-        * elf/elf.h: Add new R_PPC64_* relocs for TLS.
-        * elf/tls-macros.h [__powerpc64__]
-        (TLS_LE, TLS_IE, TLS_LD, TLS_GD): Define.
+       * elf/elf.h: Add new R_PPC64_* relocs for TLS.
+       * elf/tls-macros.h [__powerpc64__] (TLS_LE, TLS_IE, TLS_LD, TLS_GD):
+       Define.
        * sysdeps/powerpc/powerpc64/elf/configure.in: New file.
        * sysdeps/powerpc/powerpc64/elf/configure: New file (generated).
        * sysdeps/powerpc/powerpc64/dl-machine.h: Support new TLS relocs.
        * sysdeps/powerpc/powerpc64/dl-tls.h: New file.
 
-        * sysdeps/powerpc/elf/libc-start.c (__libc_start_main):
+       * sysdeps/powerpc/elf/libc-start.c (__libc_start_main):
        Do DL_SYSDEP_OSCHECK here, matching 2002-12-01 change to generic file.
 
 2003-02-25  Andreas Jaeger  <aj@suse.de>
index 446103a..4657545 100644 (file)
@@ -132,7 +132,8 @@ tests = tst-attr1 tst-attr2 \
        tst-cond1 tst-cond2 tst-cond3 tst-cond4 tst-cond5 tst-cond6 tst-cond7 \
        tst-cond8 tst-cond9 \
        tst-rwlock1 tst-rwlock2 tst-rwlock3 tst-rwlock4 tst-rwlock5 \
-       tst-rwlock6 tst-rwlock7 tst-rwlock8 tst-rwlock9 \
+       tst-rwlock6 tst-rwlock7 tst-rwlock8 tst-rwlock9 tst-rwlock10 \
+       tst-rwlock11 \
        tst-once1 tst-once2 tst-once3 tst-once4 \
        tst-key1 tst-key2 tst-key3 tst-key4 \
        tst-sem1 tst-sem2 tst-sem3 tst-sem4 tst-sem5 \
diff --git a/nptl/tst-rwlock10.c b/nptl/tst-rwlock10.c
new file mode 100644 (file)
index 0000000..43156ea
--- /dev/null
@@ -0,0 +1,21 @@
+/* Test program for timedout read/write lock functions.
+   Copyright (C) 2003 Free Software Foundation, Inc.
+   Contributed by Ulrich Drepper <drepper@redhat.com>, 2003.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public License as
+   published by the Free Software Foundation; either version 2.1 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#define INIT PTHREAD_RWLOCK_INITIALIZER
+#include "tst-rwlock8.c"
diff --git a/nptl/tst-rwlock11.c b/nptl/tst-rwlock11.c
new file mode 100644 (file)
index 0000000..ed9af7e
--- /dev/null
@@ -0,0 +1,21 @@
+/* Test program for timedout read/write lock functions.
+   Copyright (C) 2003 Free Software Foundation, Inc.
+   Contributed by Ulrich Drepper <drepper@redhat.com>, 2003.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public License as
+   published by the Free Software Foundation; either version 2.1 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#define INIT PTHREAD_RWLOCK_INITIALIZER
+#include "tst-rwlock9.c"
index ad433bb..7eeaea8 100644 (file)
 
 #define DELAY   1000000
 
-static pthread_rwlock_t lock = PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP;
+#ifndef INIT
+# define INIT PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP
+#endif
+
+static pthread_rwlock_t lock = INIT;
 
 
 static void *
index 5b6b300..adbf672 100644 (file)
 #define TIMEOUT 1000000
 #define DELAY   1000000
 
-static pthread_rwlock_t lock = PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP;
+#ifndef INIT
+# define INIT PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP
+#endif
+
+static pthread_rwlock_t lock = INIT;
 
 
 static void *
index 0410e9c..cb1d705 100644 (file)
@@ -258,7 +258,29 @@ again:
                              - sizeof (struct iovec) - sizeof (struct msghdr);
       rlen = __recvmsg (xprt->xp_sock, mesgp, 0);
       if (rlen >= 0)
-       len = mesgp->msg_namelen;
+       {
+         struct cmsghdr *cmsg;
+         len = mesgp->msg_namelen;
+         cmsg = CMSG_FIRSTHDR (mesgp);
+         if (cmsg == NULL
+             || CMSG_NXTHDR (mesgp, cmsg) != NULL
+             || cmsg->cmsg_level != SOL_IP
+             || cmsg->cmsg_type != IP_PKTINFO
+             || cmsg->cmsg_len < (sizeof (struct cmsghdr)
+                                  + sizeof (struct in_pktinfo)))
+           {
+             /* Not a simple IP_PKTINFO, ignore it.  */
+             mesgp->msg_control = NULL;
+             mesgp->msg_controllen = 0;
+           }
+         else
+           {
+             /* It was a simple IP_PKTIFO as we expected, discard the
+                interface field.  */
+             struct in_pktinfo *pkti = CMSG_DATA (cmsg);
+             pkti->ipi_ifindex = 0;
+           }
+       }
     }
   else
 #endif