Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/compat/netbsd32 Catch up after getpid/getgid/getuid chan...



details:   https://anonhg.NetBSD.org/src/rev/eacfc19a4b5d
branches:  trunk
changeset: 467244:eacfc19a4b5d
user:      kamil <kamil%NetBSD.org@localhost>
date:      Sat Jan 18 07:33:24 2020 +0000

description:
Catch up after getpid/getgid/getuid changes in native ABI in 2008

getpid(), getuid() and getgid() used to call respectively sys_getpid(),
sys_getuid() and sys_getgid(). In the BSD4.3 compat mode there was a
fallback to call sys_getpid_with_ppid() and related functions.

In 2008 the compat ifdef was removed in sys/kern/syscalls.master r. 1.216.

For purity reasons we probably shall restore the NetBSD original behavior
and implement BSD4.3 one as a compat module, however it is not worth the
complexity.

Align the netbsd32 compat ABI to native ABI and call functions that return
two integers as in BSD4.3.

diffstat:

 sys/compat/netbsd32/netbsd32_syscall.h           |   2 +-
 sys/compat/netbsd32/netbsd32_syscallargs.h       |   8 ++++----
 sys/compat/netbsd32/netbsd32_syscalls.c          |  10 +++++-----
 sys/compat/netbsd32/netbsd32_syscalls_autoload.c |   4 ++--
 sys/compat/netbsd32/netbsd32_sysent.c            |  10 +++++-----
 sys/compat/netbsd32/netbsd32_systrace_args.c     |  20 ++++++++++----------
 sys/compat/netbsd32/syscalls.master              |   8 ++++----
 7 files changed, 31 insertions(+), 31 deletions(-)

diffs (275 lines):

diff -r 75ef5f611104 -r eacfc19a4b5d sys/compat/netbsd32/netbsd32_syscall.h
--- a/sys/compat/netbsd32/netbsd32_syscall.h    Sat Jan 18 07:25:11 2020 +0000
+++ b/sys/compat/netbsd32/netbsd32_syscall.h    Sat Jan 18 07:33:24 2020 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: netbsd32_syscall.h,v 1.146 2019/11/04 11:33:01 rin Exp $ */
+/* $NetBSD: netbsd32_syscall.h,v 1.147 2020/01/18 07:33:24 kamil Exp $ */
 
 /*
  * System call numbers.
diff -r 75ef5f611104 -r eacfc19a4b5d sys/compat/netbsd32/netbsd32_syscallargs.h
--- a/sys/compat/netbsd32/netbsd32_syscallargs.h        Sat Jan 18 07:25:11 2020 +0000
+++ b/sys/compat/netbsd32/netbsd32_syscallargs.h        Sat Jan 18 07:33:24 2020 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: netbsd32_syscallargs.h,v 1.145 2019/11/04 11:33:01 rin Exp $ */
+/* $NetBSD: netbsd32_syscallargs.h,v 1.146 2020/01/18 07:33:24 kamil Exp $ */
 
 /*
  * System call argument lists.
@@ -2693,7 +2693,7 @@
 
 int    compat_43_netbsd32_olseek(struct lwp *, const struct compat_43_netbsd32_olseek_args *, register_t *);
 
-int    sys_getpid(struct lwp *, const void *, register_t *);
+int    sys_getpid_with_ppid(struct lwp *, const void *, register_t *);
 
 int    compat_40_netbsd32_mount(struct lwp *, const struct compat_40_netbsd32_mount_args *, register_t *);
 
@@ -2701,7 +2701,7 @@
 
 int    netbsd32_setuid(struct lwp *, const struct netbsd32_setuid_args *, register_t *);
 
-int    sys_getuid(struct lwp *, const void *, register_t *);
+int    sys_getuid_with_euid(struct lwp *, const void *, register_t *);
 
 int    sys_geteuid(struct lwp *, const void *, register_t *);
 
@@ -2747,7 +2747,7 @@
 
 int    netbsd32_sigaction(struct lwp *, const struct netbsd32_sigaction_args *, register_t *);
 
-int    sys_getgid(struct lwp *, const void *, register_t *);
+int    sys_getgid_with_egid(struct lwp *, const void *, register_t *);
 
 int    compat_13_netbsd32_sigprocmask(struct lwp *, const struct compat_13_netbsd32_sigprocmask_args *, register_t *);
 
diff -r 75ef5f611104 -r eacfc19a4b5d sys/compat/netbsd32/netbsd32_syscalls.c
--- a/sys/compat/netbsd32/netbsd32_syscalls.c   Sat Jan 18 07:25:11 2020 +0000
+++ b/sys/compat/netbsd32/netbsd32_syscalls.c   Sat Jan 18 07:33:24 2020 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: netbsd32_syscalls.c,v 1.145 2019/11/04 11:33:01 rin Exp $ */
+/* $NetBSD: netbsd32_syscalls.c,v 1.146 2020/01/18 07:33:24 kamil Exp $ */
 
 /*
  * System call names.
@@ -8,7 +8,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: netbsd32_syscalls.c,v 1.145 2019/11/04 11:33:01 rin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_syscalls.c,v 1.146 2020/01/18 07:33:24 kamil Exp $");
 
 #if defined(_KERNEL_OPT)
 #if defined(_KERNEL_OPT)
@@ -584,11 +584,11 @@
        /*  17 */       "break",
        /*  18 */       NULL, /* compat_20_netbsd32_getfsstat */
        /*  19 */       NULL, /* compat_43_netbsd32_olseek */
-       /*  20 */       NULL, /* getpid */
+       /*  20 */       "getpid_with_ppid",
        /*  21 */       NULL, /* compat_40_netbsd32_mount */
        /*  22 */       "unmount",
        /*  23 */       "setuid",
-       /*  24 */       NULL, /* getuid */
+       /*  24 */       "getuid_with_euid",
        /*  25 */       NULL, /* geteuid */
        /*  26 */       "ptrace",
        /*  27 */       "recvmsg",
@@ -611,7 +611,7 @@
        /*  44 */       "profil",
        /*  45 */       "ktrace",
        /*  46 */       "sigaction",
-       /*  47 */       NULL, /* getgid */
+       /*  47 */       "getgid_with_egid",
        /*  48 */       NULL, /* compat_13_sigprocmask13 */
        /*  49 */       "__getlogin",
        /*  50 */       "setlogin",
diff -r 75ef5f611104 -r eacfc19a4b5d sys/compat/netbsd32/netbsd32_syscalls_autoload.c
--- a/sys/compat/netbsd32/netbsd32_syscalls_autoload.c  Sat Jan 18 07:25:11 2020 +0000
+++ b/sys/compat/netbsd32/netbsd32_syscalls_autoload.c  Sat Jan 18 07:33:24 2020 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: netbsd32_syscalls_autoload.c,v 1.25 2019/11/04 11:33:01 rin Exp $ */
+/* $NetBSD: netbsd32_syscalls_autoload.c,v 1.26 2020/01/18 07:33:24 kamil Exp $ */
 
 /*
  * System call autoload table.
@@ -8,7 +8,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: netbsd32_syscalls_autoload.c,v 1.25 2019/11/04 11:33:01 rin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_syscalls_autoload.c,v 1.26 2020/01/18 07:33:24 kamil Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_compat_netbsd.h"
diff -r 75ef5f611104 -r eacfc19a4b5d sys/compat/netbsd32/netbsd32_sysent.c
--- a/sys/compat/netbsd32/netbsd32_sysent.c     Sat Jan 18 07:25:11 2020 +0000
+++ b/sys/compat/netbsd32/netbsd32_sysent.c     Sat Jan 18 07:33:24 2020 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: netbsd32_sysent.c,v 1.144 2019/11/04 11:33:01 rin Exp $ */
+/* $NetBSD: netbsd32_sysent.c,v 1.145 2020/01/18 07:33:24 kamil Exp $ */
 
 /*
  * System call switch table.
@@ -8,7 +8,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: netbsd32_sysent.c,v 1.144 2019/11/04 11:33:01 rin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_sysent.c,v 1.145 2020/01/18 07:33:24 kamil Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_compat_netbsd.h"
@@ -212,7 +212,7 @@
                .sy_call = (sy_call_t *)sys_nomodule
        },              /* 19 = compat_43_netbsd32_olseek */
        {
-               .sy_call = (sy_call_t *)sys_getpid
+               .sy_call = (sy_call_t *)sys_getpid_with_ppid
        },              /* 20 = getpid */
        {
                ns(struct compat_40_netbsd32_mount_args),
@@ -227,7 +227,7 @@
                .sy_call = (sy_call_t *)netbsd32_setuid
        },              /* 23 = netbsd32_setuid */
        {
-               .sy_call = (sy_call_t *)sys_getuid
+               .sy_call = (sy_call_t *)sys_getuid_with_euid
        },              /* 24 = getuid */
        {
                .sy_call = (sy_call_t *)sys_geteuid
@@ -313,7 +313,7 @@
                .sy_call = (sy_call_t *)netbsd32_sigaction
        },              /* 46 = netbsd32_sigaction */
        {
-               .sy_call = (sy_call_t *)sys_getgid
+               .sy_call = (sy_call_t *)sys_getgid_with_egid
        },              /* 47 = getgid */
        {
                ns(struct compat_13_netbsd32_sigprocmask_args),
diff -r 75ef5f611104 -r eacfc19a4b5d sys/compat/netbsd32/netbsd32_systrace_args.c
--- a/sys/compat/netbsd32/netbsd32_systrace_args.c      Sat Jan 18 07:25:11 2020 +0000
+++ b/sys/compat/netbsd32/netbsd32_systrace_args.c      Sat Jan 18 07:33:24 2020 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: netbsd32_systrace_args.c,v 1.36 2019/11/04 11:33:01 rin Exp $ */
+/* $NetBSD: netbsd32_systrace_args.c,v 1.37 2020/01/18 07:33:24 kamil Exp $ */
 
 /*
  * System call argument to DTrace register array converstion.
@@ -164,7 +164,7 @@
                *n_args = 3;
                break;
        }
-       /* sys_getpid */
+       /* sys_getpid_with_ppid */
        case 20: {
                *n_args = 0;
                break;
@@ -194,7 +194,7 @@
                *n_args = 1;
                break;
        }
-       /* sys_getuid */
+       /* sys_getuid_with_euid */
        case 24: {
                *n_args = 0;
                break;
@@ -375,7 +375,7 @@
                *n_args = 3;
                break;
        }
-       /* sys_getgid */
+       /* sys_getgid_with_egid */
        case 47: {
                *n_args = 0;
                break;
@@ -3785,7 +3785,7 @@
                        break;
                };
                break;
-       /* sys_getpid */
+       /* sys_getpid_with_ppid */
        case 20:
                break;
        /* netbsd32_mount */
@@ -3830,7 +3830,7 @@
                        break;
                };
                break;
-       /* sys_getuid */
+       /* sys_getuid_with_euid */
        case 24:
                break;
        /* sys_geteuid */
@@ -4114,7 +4114,7 @@
                        break;
                };
                break;
-       /* sys_getgid */
+       /* sys_getgid_with_egid */
        case 47:
                break;
        /* netbsd32_sigprocmask */
@@ -9633,7 +9633,7 @@
                if (ndx == 0 || ndx == 1)
                        p = "netbsd32_long";
                break;
-       /* sys_getpid */
+       /* sys_getpid_with_ppid */
        case 20:
        /* netbsd32_mount */
        case 21:
@@ -9650,7 +9650,7 @@
                if (ndx == 0 || ndx == 1)
                        p = "int";
                break;
-       /* sys_getuid */
+       /* sys_getuid_with_euid */
        case 24:
        /* sys_geteuid */
        case 25:
@@ -9747,7 +9747,7 @@
                if (ndx == 0 || ndx == 1)
                        p = "int";
                break;
-       /* sys_getgid */
+       /* sys_getgid_with_egid */
        case 47:
        /* netbsd32_sigprocmask */
        case 48:
diff -r 75ef5f611104 -r eacfc19a4b5d sys/compat/netbsd32/syscalls.master
--- a/sys/compat/netbsd32/syscalls.master       Sat Jan 18 07:25:11 2020 +0000
+++ b/sys/compat/netbsd32/syscalls.master       Sat Jan 18 07:33:24 2020 +0000
@@ -1,4 +1,4 @@
-       $NetBSD: syscalls.master,v 1.130 2019/11/04 11:32:22 rin Exp $
+       $NetBSD: syscalls.master,v 1.131 2020/01/18 07:33:24 kamil Exp $
 
 ;      from: NetBSD: syscalls.master,v 1.81 1998/07/05 08:49:50 jonathan Exp
 ;      @(#)syscalls.master     8.2 (Berkeley) 1/13/94
@@ -97,7 +97,7 @@
 19     COMPAT_43 MODULAR compat_netbsd32_43    \
                        { netbsd32_long|netbsd32||olseek(int fd, \
                            netbsd32_long offset, int whence); }
-20     NOARGS          { pid_t|sys||getpid(void); }
+20     NOARGS          { pid_t|sys||getpid_with_ppid(void); } getpid
 21     COMPAT_40 MODULAR compat_netbsd32_40    \
                        { int|netbsd32||mount(netbsd32_charp type, \
                            netbsd32_charp path, int flags, \
@@ -105,7 +105,7 @@
 22     STD             { int|netbsd32||unmount(netbsd32_charp path, \
                            int flags); }
 23     STD             { int|netbsd32||setuid(uid_t uid); }
-24     NOARGS          { uid_t|sys||getuid(void); }
+24     NOARGS          { uid_t|sys||getuid_with_euid(void); } getuid
 25     NOARGS          { uid_t|sys||geteuid(void); }
 26     STD MODULAR compat_netbsd32_ptrace \
                        { int|netbsd32||ptrace(int req, pid_t pid, \
@@ -150,7 +150,7 @@
 46     STD             { int|netbsd32||sigaction(int signum, \
                            netbsd32_sigactionp_t nsa, \
                            netbsd32_sigactionp_t osa); }
-47     NOARGS          { gid_t|sys||getgid(void); }
+47     NOARGS          { gid_t|sys||getgid_with_egid(void); } getgid
 48     COMPAT_13 MODULAR compat_netbsd32_13    \
                        { int|netbsd32||sigprocmask(int how, \
                            int mask); } sigprocmask13



Home | Main Index | Thread Index | Old Index