aboutsummaryrefslogtreecommitdiffstats
path: root/recipes-kernel/linux/linux-yocto/99399545d62533b4ae742190b5c6b11f7a5826d9.patch
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-kernel/linux/linux-yocto/99399545d62533b4ae742190b5c6b11f7a5826d9.patch')
-rw-r--r--recipes-kernel/linux/linux-yocto/99399545d62533b4ae742190b5c6b11f7a5826d9.patch46
1 files changed, 46 insertions, 0 deletions
diff --git a/recipes-kernel/linux/linux-yocto/99399545d62533b4ae742190b5c6b11f7a5826d9.patch b/recipes-kernel/linux/linux-yocto/99399545d62533b4ae742190b5c6b11f7a5826d9.patch
new file mode 100644
index 00000000..e81caf11
--- /dev/null
+++ b/recipes-kernel/linux/linux-yocto/99399545d62533b4ae742190b5c6b11f7a5826d9.patch
@@ -0,0 +1,46 @@
+From 99399545d62533b4ae742190b5c6b11f7a5826d9 Mon Sep 17 00:00:00 2001
+From: Michal Simek <michal.simek@xilinx.com>
+Date: Mon, 16 Sep 2013 07:46:23 +0200
+Subject: microblaze: Fix bug with mmap2 syscall MB implementation
+
+Fix mmap2 behaviour which incorrectly works with pgoff
+not in 4k units.
+
+Reported-by: Rich Felker <dalias@aerifal.cx>
+Signed-off-by: Michal Simek <michal.simek@xilinx.com>
+Upstream-Status: Backport
+---
+diff --git a/arch/microblaze/kernel/sys_microblaze.c b/arch/microblaze/kernel/sys_microblaze.c
+index e80a6c0..f1e1f66 100644
+--- a/arch/microblaze/kernel/sys_microblaze.c
++++ b/arch/microblaze/kernel/sys_microblaze.c
+@@ -42,3 +42,14 @@ SYSCALL_DEFINE6(mmap, unsigned long, addr, unsigned long, len,
+
+ return sys_mmap_pgoff(addr, len, prot, flags, fd, pgoff >> PAGE_SHIFT);
+ }
++
++SYSCALL_DEFINE6(mmap2, unsigned long, addr, unsigned long, len,
++ unsigned long, prot, unsigned long, flags, unsigned long, fd,
++ unsigned long, pgoff)
++{
++ if (pgoff & (~PAGE_MASK >> 12))
++ return -EINVAL;
++
++ return sys_mmap_pgoff(addr, len, prot, flags, fd,
++ pgoff >> (PAGE_SHIFT - 12));
++}
+diff --git a/arch/microblaze/kernel/syscall_table.S b/arch/microblaze/kernel/syscall_table.S
+index 4fca56c..b882ad5 100644
+--- a/arch/microblaze/kernel/syscall_table.S
++++ b/arch/microblaze/kernel/syscall_table.S
+@@ -192,7 +192,7 @@ ENTRY(sys_call_table)
+ .long sys_ni_syscall /* reserved for streams2 */
+ .long sys_vfork /* 190 */
+ .long sys_getrlimit
+- .long sys_mmap_pgoff /* mmap2 */
++ .long sys_mmap2
+ .long sys_truncate64
+ .long sys_ftruncate64
+ .long sys_stat64 /* 195 */
+--
+