From d148ed257ab179a6a408bc1668e2effb447726bd Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Thu, 27 Feb 2003 08:01:47 +0000 Subject: [PATCH] Update. 2003-02-27 Ulrich Drepper * 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 | 13 +++++++++---- nptl/Makefile | 3 ++- nptl/tst-rwlock10.c | 21 +++++++++++++++++++++ nptl/tst-rwlock11.c | 21 +++++++++++++++++++++ nptl/tst-rwlock8.c | 6 +++++- nptl/tst-rwlock9.c | 6 +++++- sunrpc/svc_udp.c | 24 +++++++++++++++++++++++- 7 files changed, 86 insertions(+), 8 deletions(-) create mode 100644 nptl/tst-rwlock10.c create mode 100644 nptl/tst-rwlock11.c diff --git a/ChangeLog b/ChangeLog index ff2f042..b39b087 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,14 +1,19 @@ +2003-02-27 Ulrich Drepper + + * sunrpc/svc_udp.c (svcudp_recv): Remove all control messages + except the PKTINFO. Reset interface in PKTINFO. + 2003-02-25 Steven Munroe - * 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 diff --git a/nptl/Makefile b/nptl/Makefile index 446103a..4657545 100644 --- a/nptl/Makefile +++ b/nptl/Makefile @@ -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 index 0000000..43156ea --- /dev/null +++ b/nptl/tst-rwlock10.c @@ -0,0 +1,21 @@ +/* Test program for timedout read/write lock functions. + Copyright (C) 2003 Free Software Foundation, Inc. + Contributed by Ulrich Drepper , 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 index 0000000..ed9af7e --- /dev/null +++ b/nptl/tst-rwlock11.c @@ -0,0 +1,21 @@ +/* Test program for timedout read/write lock functions. + Copyright (C) 2003 Free Software Foundation, Inc. + Contributed by Ulrich Drepper , 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" diff --git a/nptl/tst-rwlock8.c b/nptl/tst-rwlock8.c index ad433bb..7eeaea8 100644 --- a/nptl/tst-rwlock8.c +++ b/nptl/tst-rwlock8.c @@ -33,7 +33,11 @@ #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 * diff --git a/nptl/tst-rwlock9.c b/nptl/tst-rwlock9.c index 5b6b300..adbf672 100644 --- a/nptl/tst-rwlock9.c +++ b/nptl/tst-rwlock9.c @@ -35,7 +35,11 @@ #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 * diff --git a/sunrpc/svc_udp.c b/sunrpc/svc_udp.c index 0410e9c..cb1d705 100644 --- a/sunrpc/svc_udp.c +++ b/sunrpc/svc_udp.c @@ -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 -- 2.7.4