Work around limit in writev in 2.6.38+ kernels
authorUlrich Drepper <drepper@gmail.com>
Fri, 24 Jun 2011 18:59:17 +0000 (14:59 -0400)
committerUlrich Drepper <drepper@gmail.com>
Fri, 24 Jun 2011 18:59:17 +0000 (14:59 -0400)
ChangeLog
NEWS
sysdeps/unix/sysv/linux/Makefile
sysdeps/wordsize-64/tst-writev.c

index 097ad20..8bf8eeb 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2011-06-24  Ulrich Drepper  <drepper@gmail.com>
+
+       [BZ #12874]
+       * sysdeps/unix/sysv/linux/Makefile (CFLAGS-tst-writev.c): Define.
+       * sysdeps/wordsize-64/tst-writev.c: Work around problem with 2.6.38+
+       kernels which artificially limit size of requests.
+
 2011-06-22  H.J. Lu  <hongjiu.lu@intel.com>
 
        * sysdeps/i386/i686/multiarch/Makefile (sysdep_routines): Add
diff --git a/NEWS b/NEWS
index edb356d..dd28004 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -9,7 +9,7 @@ Version 2.15
 
 * The following bugs are resolved with this release:
 
-  12885, 12907
+  12874, 12885, 12907
 
 * New program pldd to list loaded object of a process
   Implemented by Ulrich Drepper.
index 05834e3..ebb3f5d 100644 (file)
@@ -22,6 +22,7 @@ sysdep_routines += sysctl clone llseek umount umount2 readahead \
                   eventfd eventfd_read eventfd_write prlimit
 
 CFLAGS-gethostid.c = -fexceptions
+CFLAGS-tst-writev.c += -DARTIFICIAL_LIMIT=0x7ffff000
 
 sysdep_headers += sys/mount.h sys/acct.h sys/sysctl.h \
                  sys/klog.h sys/kdaemon.h \
index 6e47886..015ad46 100644 (file)
@@ -96,8 +96,14 @@ do_test (void)
 
   if (ret != (ssize_t) EXPECTED)
     {
-      printf ("writev() return value: %zd != EXPECTED: %zd\n", ret, EXPECTED);
-      return 1;
+#ifdef ARTIFICIAL_LIMIT
+      if (ret != (ssize_t) ARTIFICIAL_LIMIT)
+#endif
+       {
+         printf ("writev() return value: %zd != EXPECTED: %zd\n",
+                 ret, EXPECTED);
+         return 1;
+       }
     }
 
   return 0;