The cirros image was rebuilt against the 3.13.0-83 kernel, drivers e1000e, igbvf...
[packages/trusty/cirros-testvm.git] / cirros-testvm / src-cirros / buildroot-2015.05 / package / uclibc / 0.9.33.2 / 0031-mmap-sys_mmap2-do-unsigned-shift-of-offset.patch
diff --git a/cirros-testvm/src-cirros/buildroot-2015.05/package/uclibc/0.9.33.2/0031-mmap-sys_mmap2-do-unsigned-shift-of-offset.patch b/cirros-testvm/src-cirros/buildroot-2015.05/package/uclibc/0.9.33.2/0031-mmap-sys_mmap2-do-unsigned-shift-of-offset.patch
new file mode 100644 (file)
index 0000000..475dcfd
--- /dev/null
@@ -0,0 +1,35 @@
+From 569d1423ac2b585b5cb38bee545b5e0ae2bd7f67 Mon Sep 17 00:00:00 2001
+From: James Hogan <james.hogan@imgtec.com>
+Date: Thu, 17 May 2012 12:42:54 +0100
+Subject: [PATCH] mmap()->sys_mmap2: do unsigned shift of offset
+
+Fix the implementation of mmap based on the mmap2 system call, to
+construct pgoffset from offset with an unsigned shift rather than a
+signed (off_t) shift. The mmap2 test in the testsuite catches this case
+by mmap'ing with a large offset (with the sign bit set). The signed
+shift repeats the sign bit making the page shift way out of range. This
+is already fixed similarly in mmap64().
+
+Signed-off-by: James Hogan <james.hogan@imgtec.com>
+Signed-off-by: Mike Frysinger <vapier@gentoo.org>
+---
+ libc/sysdeps/linux/common/mmap.c |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/libc/sysdeps/linux/common/mmap.c b/libc/sysdeps/linux/common/mmap.c
+index 8995898..d53eabb 100644
+--- a/libc/sysdeps/linux/common/mmap.c
++++ b/libc/sysdeps/linux/common/mmap.c
+@@ -63,7 +63,8 @@ __ptr_t mmap(__ptr_t addr, size_t len, int prot, int flags, int fd, __off_t offs
+               __set_errno(EINVAL);
+               return MAP_FAILED;
+       }
+-      return __syscall_mmap2(addr, len, prot, flags, fd, offset >> MMAP2_PAGE_SHIFT);
++      return __syscall_mmap2(addr, len, prot, flags,
++                             fd, ((__u_long) offset >> MMAP2_PAGE_SHIFT));
+ }
+ libc_hidden_def(mmap)
+-- 
+1.7.10.4
+