diff options
-rw-r--r-- | arch/sparc/kernel/systbls.S | 2 | ||||
-rw-r--r-- | arch/sparc64/kernel/sys_sparc32.c | 21 | ||||
-rw-r--r-- | arch/sparc64/kernel/systbls.S | 4 | ||||
-rw-r--r-- | include/asm-sparc/unistd.h | 2 | ||||
-rw-r--r-- | include/asm-sparc64/unistd.h | 2 |
5 files changed, 26 insertions, 5 deletions
diff --git a/arch/sparc/kernel/systbls.S b/arch/sparc/kernel/systbls.S index c0314705d73a..768de64b371f 100644 --- a/arch/sparc/kernel/systbls.S +++ b/arch/sparc/kernel/systbls.S | |||
@@ -76,7 +76,7 @@ sys_call_table: | |||
76 | /*270*/ .long sys_io_submit, sys_io_cancel, sys_io_getevents, sys_mq_open, sys_mq_unlink | 76 | /*270*/ .long sys_io_submit, sys_io_cancel, sys_io_getevents, sys_mq_open, sys_mq_unlink |
77 | /*275*/ .long sys_mq_timedsend, sys_mq_timedreceive, sys_mq_notify, sys_mq_getsetattr, sys_waitid | 77 | /*275*/ .long sys_mq_timedsend, sys_mq_timedreceive, sys_mq_notify, sys_mq_getsetattr, sys_waitid |
78 | /*280*/ .long sys_ni_syscall, sys_add_key, sys_request_key, sys_keyctl, sys_openat | 78 | /*280*/ .long sys_ni_syscall, sys_add_key, sys_request_key, sys_keyctl, sys_openat |
79 | /*285*/ .long sys_mkdirat, sys_mknodat, sys_fchownat, sys_futimesat, sys_newfstatat | 79 | /*285*/ .long sys_mkdirat, sys_mknodat, sys_fchownat, sys_futimesat, sys_fstatat64 |
80 | /*290*/ .long sys_unlinkat, sys_renameat, sys_linkat, sys_symlinkat, sys_readlinkat | 80 | /*290*/ .long sys_unlinkat, sys_renameat, sys_linkat, sys_symlinkat, sys_readlinkat |
81 | /*295*/ .long sys_fchmodat, sys_faccessat, sys_pselect6, sys_ppoll, sys_unshare | 81 | /*295*/ .long sys_fchmodat, sys_faccessat, sys_pselect6, sys_ppoll, sys_unshare |
82 | 82 | ||
diff --git a/arch/sparc64/kernel/sys_sparc32.c b/arch/sparc64/kernel/sys_sparc32.c index 9264ccbaaafa..417727bd87ba 100644 --- a/arch/sparc64/kernel/sys_sparc32.c +++ b/arch/sparc64/kernel/sys_sparc32.c | |||
@@ -428,6 +428,27 @@ asmlinkage long compat_sys_fstat64(unsigned int fd, | |||
428 | return error; | 428 | return error; |
429 | } | 429 | } |
430 | 430 | ||
431 | asmlinkage long compat_sys_fstatat64(unsigned int dfd, char __user *filename, | ||
432 | struct compat_stat64 __user * statbuf, int flag) | ||
433 | { | ||
434 | struct kstat stat; | ||
435 | int error = -EINVAL; | ||
436 | |||
437 | if ((flag & ~AT_SYMLINK_NOFOLLOW) != 0) | ||
438 | goto out; | ||
439 | |||
440 | if (flag & AT_SYMLINK_NOFOLLOW) | ||
441 | error = vfs_lstat_fd(dfd, filename, &stat); | ||
442 | else | ||
443 | error = vfs_stat_fd(dfd, filename, &stat); | ||
444 | |||
445 | if (!error) | ||
446 | error = cp_compat_stat64(&stat, statbuf); | ||
447 | |||
448 | out: | ||
449 | return error; | ||
450 | } | ||
451 | |||
431 | asmlinkage long compat_sys_sysfs(int option, u32 arg1, u32 arg2) | 452 | asmlinkage long compat_sys_sysfs(int option, u32 arg1, u32 arg2) |
432 | { | 453 | { |
433 | return sys_sysfs(option, arg1, arg2); | 454 | return sys_sysfs(option, arg1, arg2); |
diff --git a/arch/sparc64/kernel/systbls.S b/arch/sparc64/kernel/systbls.S index a19168510be2..c3adb7ac167d 100644 --- a/arch/sparc64/kernel/systbls.S +++ b/arch/sparc64/kernel/systbls.S | |||
@@ -77,7 +77,7 @@ sys_call_table32: | |||
77 | /*270*/ .word sys32_io_submit, sys_io_cancel, compat_sys_io_getevents, sys32_mq_open, sys_mq_unlink | 77 | /*270*/ .word sys32_io_submit, sys_io_cancel, compat_sys_io_getevents, sys32_mq_open, sys_mq_unlink |
78 | .word compat_sys_mq_timedsend, compat_sys_mq_timedreceive, compat_sys_mq_notify, compat_sys_mq_getsetattr, compat_sys_waitid | 78 | .word compat_sys_mq_timedsend, compat_sys_mq_timedreceive, compat_sys_mq_notify, compat_sys_mq_getsetattr, compat_sys_waitid |
79 | /*280*/ .word sys_ni_syscall, sys_add_key, sys_request_key, sys_keyctl, compat_sys_openat | 79 | /*280*/ .word sys_ni_syscall, sys_add_key, sys_request_key, sys_keyctl, compat_sys_openat |
80 | .word sys_mkdirat, sys_mknodat, sys_fchownat, compat_sys_futimesat, compat_sys_newfstatat | 80 | .word sys_mkdirat, sys_mknodat, sys_fchownat, compat_sys_futimesat, compat_sys_fstatat64 |
81 | /*285*/ .word sys_unlinkat, sys_renameat, sys_linkat, sys_symlinkat, sys_readlinkat | 81 | /*285*/ .word sys_unlinkat, sys_renameat, sys_linkat, sys_symlinkat, sys_readlinkat |
82 | .word sys_fchmodat, sys_faccessat, compat_sys_pselect6, compat_sys_ppoll, sys_unshare | 82 | .word sys_fchmodat, sys_faccessat, compat_sys_pselect6, compat_sys_ppoll, sys_unshare |
83 | 83 | ||
@@ -146,7 +146,7 @@ sys_call_table: | |||
146 | /*270*/ .word sys_io_submit, sys_io_cancel, sys_io_getevents, sys_mq_open, sys_mq_unlink | 146 | /*270*/ .word sys_io_submit, sys_io_cancel, sys_io_getevents, sys_mq_open, sys_mq_unlink |
147 | .word sys_mq_timedsend, sys_mq_timedreceive, sys_mq_notify, sys_mq_getsetattr, sys_waitid | 147 | .word sys_mq_timedsend, sys_mq_timedreceive, sys_mq_notify, sys_mq_getsetattr, sys_waitid |
148 | /*280*/ .word sys_nis_syscall, sys_add_key, sys_request_key, sys_keyctl, sys_openat | 148 | /*280*/ .word sys_nis_syscall, sys_add_key, sys_request_key, sys_keyctl, sys_openat |
149 | .word sys_mkdirat, sys_mknodat, sys_fchownat, sys_futimesat, sys_newfstatat | 149 | .word sys_mkdirat, sys_mknodat, sys_fchownat, sys_futimesat, sys_fstatat64 |
150 | /*285*/ .word sys_unlinkat, sys_renameat, sys_linkat, sys_symlinkat, sys_readlinkat | 150 | /*285*/ .word sys_unlinkat, sys_renameat, sys_linkat, sys_symlinkat, sys_readlinkat |
151 | .word sys_fchmodat, sys_faccessat, sys_pselect6, sys_ppoll, sys_unshare | 151 | .word sys_fchmodat, sys_faccessat, sys_pselect6, sys_ppoll, sys_unshare |
152 | 152 | ||
diff --git a/include/asm-sparc/unistd.h b/include/asm-sparc/unistd.h index 0615d601a7c6..64ec640a40ee 100644 --- a/include/asm-sparc/unistd.h +++ b/include/asm-sparc/unistd.h | |||
@@ -305,7 +305,7 @@ | |||
305 | #define __NR_mknodat 286 | 305 | #define __NR_mknodat 286 |
306 | #define __NR_fchownat 287 | 306 | #define __NR_fchownat 287 |
307 | #define __NR_futimesat 288 | 307 | #define __NR_futimesat 288 |
308 | #define __NR_newfstatat 289 | 308 | #define __NR_fstatat64 289 |
309 | #define __NR_unlinkat 290 | 309 | #define __NR_unlinkat 290 |
310 | #define __NR_renameat 291 | 310 | #define __NR_renameat 291 |
311 | #define __NR_linkat 292 | 311 | #define __NR_linkat 292 |
diff --git a/include/asm-sparc64/unistd.h b/include/asm-sparc64/unistd.h index c58ba8a096cf..a284986b1541 100644 --- a/include/asm-sparc64/unistd.h +++ b/include/asm-sparc64/unistd.h | |||
@@ -307,7 +307,7 @@ | |||
307 | #define __NR_mknodat 286 | 307 | #define __NR_mknodat 286 |
308 | #define __NR_fchownat 287 | 308 | #define __NR_fchownat 287 |
309 | #define __NR_futimesat 288 | 309 | #define __NR_futimesat 288 |
310 | #define __NR_newfstatat 289 | 310 | #define __NR_fstatat64 289 |
311 | #define __NR_unlinkat 290 | 311 | #define __NR_unlinkat 290 |
312 | #define __NR_renameat 291 | 312 | #define __NR_renameat 291 |
313 | #define __NR_linkat 292 | 313 | #define __NR_linkat 292 |