aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@gmail.com>2011-06-24 14:59:17 -0400
committerUlrich Drepper <drepper@gmail.com>2011-06-24 14:59:17 -0400
commitd5495a116c6271c0ae8f6955b64b7b010b1b341a (patch)
tree1c7f962b0521b487971d88e9b315a1391518f7f4
parent0b1cbaaef5ccc21baf2c35d4698fb28e82eab385 (diff)
downloadglibc-d5495a116c6271c0ae8f6955b64b7b010b1b341a.tar
glibc-d5495a116c6271c0ae8f6955b64b7b010b1b341a.tar.gz
glibc-d5495a116c6271c0ae8f6955b64b7b010b1b341a.tar.bz2
glibc-d5495a116c6271c0ae8f6955b64b7b010b1b341a.zip
Work around limit in writev in 2.6.38+ kernels
-rw-r--r--ChangeLog7
-rw-r--r--NEWS2
-rw-r--r--sysdeps/unix/sysv/linux/Makefile1
-rw-r--r--sysdeps/wordsize-64/tst-writev.c10
4 files changed, 17 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 097ad2094c..8bf8eebb8f 100644
--- 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 edb356d19f..dd280043b9 100644
--- 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.
diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile
index 05834e3261..ebb3f5d852 100644
--- a/sysdeps/unix/sysv/linux/Makefile
+++ b/sysdeps/unix/sysv/linux/Makefile
@@ -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 \
diff --git a/sysdeps/wordsize-64/tst-writev.c b/sysdeps/wordsize-64/tst-writev.c
index 6e4788612c..015ad468cd 100644
--- a/sysdeps/wordsize-64/tst-writev.c
+++ b/sysdeps/wordsize-64/tst-writev.c
@@ -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;