aboutsummaryrefslogtreecommitdiffstats
path: root/arch/parisc
diff options
context:
space:
mode:
authorHelge Deller <deller@gmx.de>2013-02-19 15:23:59 -0500
committerHelge Deller <deller@gmx.de>2013-02-20 16:57:12 -0500
commit4474a331cfccc5092b79e3839205aacf44f3a571 (patch)
treeff25401a9891374af6774eeb5a72d33fc6bb13ce /arch/parisc
parent2e800dff4f16a6e47adcbea7188fc586bfa5c30b (diff)
parisc: fix fallocate syscall
fallocate(off_t) gets redirected by glibc to fallocate64(loff_t) where the 64bit loff_t values get splitted into two 32bit (hi/lo) values. This patch fixes this syscall for the 32- and 64bit kernel. Signed-off-by: Helge Deller <deller@gmx.de>
Diffstat (limited to 'arch/parisc')
-rw-r--r--arch/parisc/kernel/sys_parisc.c7
-rw-r--r--arch/parisc/kernel/sys_parisc32.c7
-rw-r--r--arch/parisc/kernel/syscall_table.S2
3 files changed, 8 insertions, 8 deletions
diff --git a/arch/parisc/kernel/sys_parisc.c b/arch/parisc/kernel/sys_parisc.c
index a047b3227e50..54d619d4cac6 100644
--- a/arch/parisc/kernel/sys_parisc.c
+++ b/arch/parisc/kernel/sys_parisc.c
@@ -213,6 +213,13 @@ asmlinkage long parisc_sync_file_range(int fd,
213 (loff_t)hi_nbytes << 32 | lo_nbytes, flags); 213 (loff_t)hi_nbytes << 32 | lo_nbytes, flags);
214} 214}
215 215
216asmlinkage long parisc_fallocate(int fd, int mode, u32 offhi, u32 offlo,
217 u32 lenhi, u32 lenlo)
218{
219 return sys_fallocate(fd, mode, ((u64)offhi << 32) | offlo,
220 ((u64)lenhi << 32) | lenlo);
221}
222
216asmlinkage unsigned long sys_alloc_hugepages(int key, unsigned long addr, unsigned long len, int prot, int flag) 223asmlinkage unsigned long sys_alloc_hugepages(int key, unsigned long addr, unsigned long len, int prot, int flag)
217{ 224{
218 return -ENOMEM; 225 return -ENOMEM;
diff --git a/arch/parisc/kernel/sys_parisc32.c b/arch/parisc/kernel/sys_parisc32.c
index cee60f77fc1f..986294425e86 100644
--- a/arch/parisc/kernel/sys_parisc32.c
+++ b/arch/parisc/kernel/sys_parisc32.c
@@ -142,13 +142,6 @@ long sys32_lookup_dcookie(u32 cookie_high, u32 cookie_low, char __user *buf,
142 buf, len); 142 buf, len);
143} 143}
144 144
145asmlinkage long compat_sys_fallocate(int fd, int mode, u32 offhi, u32 offlo,
146 u32 lenhi, u32 lenlo)
147{
148 return sys_fallocate(fd, mode, ((loff_t)offhi << 32) | offlo,
149 ((loff_t)lenhi << 32) | lenlo);
150}
151
152asmlinkage long compat_sys_fanotify_mark(int fan_fd, int flags, u32 mask_hi, 145asmlinkage long compat_sys_fanotify_mark(int fan_fd, int flags, u32 mask_hi,
153 u32 mask_lo, int fd, 146 u32 mask_lo, int fd,
154 const char __user *pathname) 147 const char __user *pathname)
diff --git a/arch/parisc/kernel/syscall_table.S b/arch/parisc/kernel/syscall_table.S
index 773b4ee1e1d3..2a5f82985aa8 100644
--- a/arch/parisc/kernel/syscall_table.S
+++ b/arch/parisc/kernel/syscall_table.S
@@ -403,7 +403,7 @@
403 ENTRY_COMP(signalfd) 403 ENTRY_COMP(signalfd)
404 ENTRY_SAME(ni_syscall) /* was timerfd */ 404 ENTRY_SAME(ni_syscall) /* was timerfd */
405 ENTRY_SAME(eventfd) 405 ENTRY_SAME(eventfd)
406 ENTRY_COMP(fallocate) /* 305 */ 406 ENTRY_OURS(fallocate) /* 305 */
407 ENTRY_SAME(timerfd_create) 407 ENTRY_SAME(timerfd_create)
408 ENTRY_COMP(timerfd_settime) 408 ENTRY_COMP(timerfd_settime)
409 ENTRY_COMP(timerfd_gettime) 409 ENTRY_COMP(timerfd_gettime)