Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

[PATCH] s390: fstatat64 support

Add fstatat64 support to s390 in order to follow changes with
commit cff2b760096d1e6feaa31948e7af4abbefe47822 .
Also fixes compilation for 31 bit.

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>

authored by

Heiko Carstens and committed by
Linus Torvalds
19bf9cbf bc6d7fdf

+28 -6
+20
arch/s390/kernel/compat_linux.c
··· 905 905 return ret; 906 906 } 907 907 908 + asmlinkage long sys32_fstatat(unsigned int dfd, char __user *filename, 909 + struct stat64_emu31 __user* statbuf, int flag) 910 + { 911 + struct kstat stat; 912 + int error = -EINVAL; 913 + 914 + if ((flag & ~AT_SYMLINK_NOFOLLOW) != 0) 915 + goto out; 916 + 917 + if (flag & AT_SYMLINK_NOFOLLOW) 918 + error = vfs_lstat_fd(dfd, filename, &stat); 919 + else 920 + error = vfs_stat_fd(dfd, filename, &stat); 921 + 922 + if (!error) 923 + error = cp_stat64(statbuf, &stat); 924 + out: 925 + return error; 926 + } 927 + 908 928 /* 909 929 * Linux/i386 didn't use to be able to handle more than 910 930 * 4 system call parameters, so these system calls used a memory
+4 -4
arch/s390/kernel/compat_wrapper.S
··· 1523 1523 llgtr %r4,%r4 # struct timeval * 1524 1524 jg compat_sys_futimesat 1525 1525 1526 - .globl compat_sys_newfstatat_wrapper 1527 - compat_sys_newfstatat_wrapper: 1526 + .globl sys32_fstatat_wrapper 1527 + sys32_fstatat_wrapper: 1528 1528 llgfr %r2,%r2 # unsigned int 1529 1529 llgtr %r3,%r3 # char * 1530 - llgtr %r4,%r4 # struct stat * 1530 + llgtr %r4,%r4 # struct stat64 * 1531 1531 lgfr %r5,%r5 # int 1532 - jg compat_sys_newfstatat 1532 + jg sys32_fstatat 1533 1533 1534 1534 .globl sys_unlinkat_wrapper 1535 1535 sys_unlinkat_wrapper:
+1 -1
arch/s390/kernel/syscalls.S
··· 301 301 SYSCALL(sys_mknodat,sys_mknodat,sys_mknodat_wrapper) /* 290 */ 302 302 SYSCALL(sys_fchownat,sys_fchownat,sys_fchownat_wrapper) 303 303 SYSCALL(sys_futimesat,sys_futimesat,compat_sys_futimesat_wrapper) 304 - SYSCALL(sys_newfstatat,sys_newfstatat,compat_sys_newfstatat_wrapper) 304 + SYSCALL(sys_fstatat64,sys_newfstatat,sys32_fstatat_wrapper) 305 305 SYSCALL(sys_unlinkat,sys_unlinkat,sys_unlinkat_wrapper) 306 306 SYSCALL(sys_renameat,sys_renameat,sys_renameat_wrapper) /* 295 */ 307 307 SYSCALL(sys_linkat,sys_linkat,sys_linkat_wrapper)
+3 -1
include/asm-s390/unistd.h
··· 285 285 #define __NR_mknodat 290 286 286 #define __NR_fchownat 291 287 287 #define __NR_futimesat 292 288 - #define __NR_newfstatat 293 288 + #define __NR_fstatat64 293 289 289 #define __NR_unlinkat 294 290 290 #define __NR_renameat 295 291 291 #define __NR_linkat 296 ··· 359 359 #undef __NR_fcntl64 360 360 #undef __NR_sendfile64 361 361 #undef __NR_fadvise64_64 362 + #undef __NR_fstatat64 362 363 363 364 #define __NR_select 142 364 365 #define __NR_getrlimit 191 /* SuS compliant getrlimit */ ··· 382 381 #define __NR_setgid 214 383 382 #define __NR_setfsuid 215 384 383 #define __NR_setfsgid 216 384 + #define __NR_newfstatat 293 385 385 386 386 #endif 387 387