s390x sys32 (remove duplicated code)
RFC PATCH 1/1 s390x sys32 (remove duplicated code)
Hello,
I am working on a patch that removes the old limit of NGROUPS.
In doing so, I am checking everything that references NGROUPS. One such place is in arch/s390x/kernel/linux32.c.
I notice these things:
* s390x defines __kernel_old_gid_t to __kernel_gid_t (unsigned int)
* s390x has a sys32_getgroups16() which looks JUST LIKE uid16.c sys_getgroups16
* s390x does not define CONFIG_UID16, but seems to need it
It seems to me that if we do:
* s390x defines CONFIG_UID16
* typedef __kernel_old_gid_t to u16
* get rid of all the sys32_*16 stuff and just call the uid16.c function
We could save a bit of duplicated code. Patches that remove code are good, right?
Obviouscly, I can't test it. Please - comments? Shoot me down if I have missed something. What I know of s390 can fit inside a thimble.
2.4.x patch attached, 2.5.x to follow, if this is ok (whether it goes into 2.4.x or not, I did this version first)
Tim
Signature · 4 lines
Tim Hockin Systems Software Engineer Sun Microsystems, Linux Kernel Engineering [email protected]
# This is a BitKeeper generated patch for the following project:
# Project Name: Linux kernel tree
# This patch format is intended for GNU patch command version 2.5 or higher. # This patch includes the following deltas:
# ChangeSet 1.587 -> 1.588 # arch/s390x/defconfig 1.8 -> 1.9 # arch/s390x/config.in 1.9 -> 1.10
# arch/s390x/kernel/linux32.c 1.10 -> 1.11
# arch/s390x/kernel/entry.S 1.13 -> 1.14
# arch/s390x/kernel/wrapper32.S 1.4 -> 1.5
# include/asm-s390x/posix_types.h 1.1 -> 1.3
#
# The following is the BitKeeper ChangeSet Log
# --------------------------------------------
# 02/08/26 [email protected] 1.588
# enable UID16 for s390x # change s390x duplicated code to call UID16 functions # -------------------------------------------- # diff -Nru a/arch/s390x/config.in b/arch/s390x/config.in --- a/arch/s390x/config.in Mon Aug 26 11:10:46 2002 +++ b/arch/s390x/config.in Mon Aug 26 11:10:46 2002 @@ -13,6 +13,7 @@ mainmenu_name "Linux Kernel Configuration" define_bool CONFIG_ARCH_S390 y define_bool CONFIG_ARCH_S390X y +define_bool CONFIG_UID16 y
mainmenu_option next_comment
comment 'Code maturity level options'
arch/s390x/defconfig +1 -0
@@ -9,6 +9,7 @@ # CONFIG_GENERIC_BUST_SPINLOCK is not set CONFIG_ARCH_S390=y CONFIG_ARCH_S390X=y +CONFIG_UID16=y # # Code maturity level options
arch/s390x/kernel/entry.S +5 -5
@@ -391,7 +391,7 @@ .long SYSCALL(sys_mount,sys32_mount_wrapper) .long SYSCALL(sys_oldumount,sys32_oldumount_wrapper) .long SYSCALL(sys_ni_syscall,sys32_setuid16_wrapper) /* old setuid16 syscall*/ - .long SYSCALL(sys_ni_syscall,sys32_getuid16) /* old getuid16 syscall*/ + .long SYSCALL(sys_ni_syscall,sys_getuid16) /* old getuid16 syscall*/ .long SYSCALL(sys_ni_syscall,sys_ni_syscall) /* 25 old stime syscall */ .long SYSCALL(sys_ptrace,sys32_ptrace_wrapper) .long SYSCALL(sys_alarm,sys32_alarm_wrapper)
@@ -413,11 +413,11 @@ .long SYSCALL(sys_times,sys32_times_wrapper) .long SYSCALL(sys_ni_syscall,sys_ni_syscall) /* old prof syscall */ .long SYSCALL(sys_brk,sys32_brk_wrapper) /* 45 */ - .long SYSCALL(sys_ni_syscall,sys32_setgid16) /* old setgid16 syscall*/ - .long SYSCALL(sys_ni_syscall,sys32_getgid16) /* old getgid16 syscall*/ + .long SYSCALL(sys_ni_syscall,sys_setgid16) /* old setgid16 syscall*/ + .long SYSCALL(sys_ni_syscall,sys_getgid16) /* old getgid16 syscall*/ .long SYSCALL(sys_signal,sys32_signal_wrapper) - .long SYSCALL(sys_ni_syscall,sys32_geteuid16) /* old geteuid16 syscall */ - .long SYSCALL(sys_ni_syscall,sys32_getegid16) /* old getegid16 syscall */ + .long SYSCALL(sys_ni_syscall,sys_geteuid16) /* old geteuid16 syscall */ + .long SYSCALL(sys_ni_syscall,sys_getegid16) /* old getegid16 syscall */ .long SYSCALL(sys_acct,sys32_acct_wrapper) .long SYSCALL(sys_umount,sys32_umount_wrapper) .long SYSCALL(sys_ni_syscall,sys_ni_syscall) /* old lock syscall */
arch/s390x/kernel/linux32.c +0 -175
181 lines not on this page · raw message
arch/s390x/kernel/wrapper32.S +15 -15
@@ -83,7 +83,7 @@ llgtr %r2,%r2 # const char * llgfr %r3,%r3 # __kernel_old_uid_emu31_t llgfr %r4,%r4 # __kernel_old_uid_emu31_t - jg sys32_lchown16 # branch to system call + jg sys_lchown16 # branch to system call .globl sys32_lseek_wrapper sys32_lseek_wrapper:
@@ -111,7 +111,7 @@ .globl sys32_setuid16_wrapper sys32_setuid16_wrapper: llgfr %r2,%r2 # __kernel_old_uid_emu31_t - jg sys32_setuid16 # branch to system call + jg sys_setuid16 # branch to system call #sys32_getuid16_wrapper # void
@@ -195,7 +195,7 @@ .globl sys32_setgid16_wrapper sys32_setgid16_wrapper: llgfr %r2,%r2 # __kernel_old_gid_emu31_t - jg sys32_setgid16 # branch to system call + jg sys_setgid16 # branch to system call #sys32_getgid16_wrapper # void
@@ -278,13 +278,13 @@ sys32_setreuid16_wrapper: llgfr %r2,%r2 # __kernel_old_uid_emu31_t llgfr %r3,%r3 # __kernel_old_uid_emu31_t - jg sys32_setreuid16 # branch to system call + jg sys_setreuid16 # branch to system call .globl sys32_setregid16_wrapper sys32_setregid16_wrapper: llgfr %r2,%r2 # __kernel_old_gid_emu31_t llgfr %r3,%r3 # __kernel_old_gid_emu31_t - jg sys32_setregid16 # branch to system call + jg sys_setregid16 # branch to system call #sys32_sigsuspend_wrapper # done in sigsuspend_glue
@@ -338,13 +338,13 @@ sys32_getgroups16_wrapper: lgfr %r2,%r2 # int llgtr %r3,%r3 # __kernel_old_gid_emu31_t * - jg sys32_getgroups16 # branch to system call + jg sys_getgroups16 # branch to system call .globl sys32_setgroups16_wrapper sys32_setgroups16_wrapper: lgfr %r2,%r2 # int llgtr %r3,%r3 # __kernel_old_gid_emu31_t * - jg sys32_setgroups16 # branch to system call + jg sys_setgroups16 # branch to system call .globl sys32_symlink_wrapper sys32_symlink_wrapper:
@@ -419,7 +419,7 @@ llgfr %r2,%r2 # unsigned int llgtr %r3,%r3 # __kernel_old_uid_emu31_t * llgtr %r4,%r4 # __kernel_old_gid_emu31_t * - jg sys32_fchown16 # branch to system call + jg sys_fchown16 # branch to system call .globl sys32_getpriority_wrapper sys32_getpriority_wrapper:
@@ -619,12 +619,12 @@ .globl sys32_setfsuid16_wrapper sys32_setfsuid16_wrapper: llgfr %r2,%r2 # __kernel_old_uid_emu31_t - jg sys32_setfsuid16 # branch to system call + jg sys_setfsuid16 # branch to system call .globl sys32_setfsgid16_wrapper sys32_setfsgid16_wrapper: llgfr %r2,%r2 # __kernel_old_gid_emu31_t - jg sys32_setfsgid16 # branch to system call + jg sys_setfsgid16 # branch to system call .globl sys32_llseek_wrapper sys32_llseek_wrapper:
@@ -771,14 +771,14 @@ llgfr %r2,%r2 # __kernel_old_uid_emu31_t llgfr %r3,%r3 # __kernel_old_uid_emu31_t llgfr %r4,%r4 # __kernel_old_uid_emu31_t - jg sys32_setresuid16 # branch to system call + jg sys_setresuid16 # branch to system call .globl sys32_getresuid16_wrapper sys32_getresuid16_wrapper: llgtr %r2,%r2 # __kernel_old_uid_emu31_t * llgtr %r3,%r3 # __kernel_old_uid_emu31_t * llgtr %r4,%r4 # __kernel_old_uid_emu31_t * - jg sys32_getresuid16 # branch to system call + jg sys_getresuid16 # branch to system call .globl sys32_query_module_wrapper sys32_query_module_wrapper:
@@ -808,14 +808,14 @@ llgfr %r2,%r2 # __kernel_old_gid_emu31_t llgfr %r3,%r3 # __kernel_old_gid_emu31_t llgfr %r4,%r4 # __kernel_old_gid_emu31_t - jg sys32_setresgid16 # branch to system call + jg sys_setresgid16 # branch to system call .globl sys32_getresgid16_wrapper sys32_getresgid16_wrapper: llgtr %r2,%r2 # __kernel_old_gid_emu31_t * llgtr %r3,%r3 # __kernel_old_gid_emu31_t * llgtr %r4,%r4 # __kernel_old_gid_emu31_t * - jg sys32_getresgid16 # branch to system call + jg sys_getresgid16 # branch to system call .globl sys32_prctl_wrapper sys32_prctl_wrapper:
@@ -889,7 +889,7 @@ llgtr %r2,%r2 # const char * llgfr %r3,%r3 # __kernel_old_uid_emu31_t llgfr %r4,%r4 # __kernel_old_gid_emu31_t - jg sys32_chown16 # branch to system call + jg sys_chown16 # branch to system call .globl sys32_getcwd_wrapper sys32_getcwd_wrapper:
include/asm-s390x/posix_types.h +2 -2
@@ -37,8 +37,8 @@typedef unsigned short __kernel_uid16_t ;typedef unsigned short __kernel_gid16_t ; -typedef __kernel_uid_t __kernel_old_uid_t ; -typedef __kernel_gid_t __kernel_old_gid_t ; +typedef __kernel_uid16_t __kernel_old_uid_t ; +typedef __kernel_gid16_t __kernel_old_gid_t ;typedef __kernel_uid_t __kernel_uid32_t ;typedef __kernel_gid_t __kernel_gid32_t ;