diff options
Diffstat (limited to 'recipes-kernel/linux/linux-yocto/99399545d62533b4ae742190b5c6b11f7a5826d9.patch')
-rw-r--r-- | recipes-kernel/linux/linux-yocto/99399545d62533b4ae742190b5c6b11f7a5826d9.patch | 46 |
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 */ +-- + |