]> Zhao Yanbai Git Server - minix.git/commitdiff
Message type for PM_SRV_FORK
authorLionel Sambuc <lionel@minix3.org>
Tue, 13 May 2014 11:35:40 +0000 (13:35 +0200)
committerLionel Sambuc <lionel@minix3.org>
Mon, 28 Jul 2014 15:05:36 +0000 (17:05 +0200)
Change-Id: I0e112da380805d40901a4041fd82da6e842e1f9b

include/minix/callnr.h
include/minix/ipc.h
lib/libsys/srv_fork.c
servers/pm/forkexit.c

index 060a3a65d377cff00b5fb7c0379f049a5aa4133d..e70fa17435f5b6ccafac78dc9f5047a17d58debd 100644 (file)
 #define PM_SIG_SET             m2_sigset /* sigset_t */
 #define PM_SIG_CTX             m2_p1   /* struct sigcontext * */
 
-/* Field names for the srv_fork(2) call. */
-#define PM_SRV_FORK_UID                m1_i1   /* uid_t */
-#define PM_SRV_FORK_GID                m1_i2   /* gid_t */
-
 /* Field names for the getuid(2) call. */
 #define PM_GETUID_EUID         m1_i1   /* uid_t */
 
index f0331b14db4c68ae588bb56fe62d3edab11412bc..e1ab66443ac9f3676b5a647674252c578bdce72d 100644 (file)
@@ -495,6 +495,14 @@ typedef struct {
 } mess_pm_lsys_getprocnr;
 _ASSERT_MSG_SIZE(mess_pm_lsys_getprocnr);
 
+typedef struct {
+       uid_t uid;
+       gid_t gid;
+
+       uint8_t padding[48];
+} mess_lsys_pm_srv_fork;
+_ASSERT_MSG_SIZE(mess_lsys_pm_srv_fork);
+
 typedef struct {
        endpoint_t endpt;
        cp_grant_id_t grant;
@@ -1018,6 +1026,7 @@ typedef struct {
 
                mess_lsys_pm_getepinfo  m_lsys_pm_getepinfo;
                mess_lsys_pm_getprocnr  m_lsys_pm_getprocnr;
+               mess_lsys_pm_srv_fork   m_lsys_pm_srv_fork;
 
                mess_lsys_vfs_checkperms m_lsys_vfs_checkperms;
                mess_lsys_vfs_copyfd    m_lsys_vfs_copyfd;
index 2ba69378ba7c1810fc721849b22e001cf79b72ce..d94ae532af8a61fc16c3411ab0f5d90947487a54 100644 (file)
@@ -8,7 +8,7 @@ srv_fork(uid_t reuid, gid_t regid)
        message m;
 
        memset(&m, 0, sizeof(m));
-       m.PM_SRV_FORK_UID = (int) reuid;
-       m.PM_SRV_FORK_GID = (int) regid;
+       m.m_lsys_pm_srv_fork.uid = reuid;
+       m.m_lsys_pm_srv_fork.gid = regid;
        return _taskcall(PM_PROC_NR, PM_SRV_FORK, &m);
 }
index 85ffb6f361d4f4f76d2ad29f32b5fa502b68226b..9e714fd6a85d5655b7ba65c4bc0975816c0545c4 100644 (file)
@@ -194,10 +194,10 @@ int do_srv_fork()
   rmc->mp_exitstatus = 0;
   rmc->mp_sigstatus = 0;
   rmc->mp_endpoint = child_ep;         /* passed back by VM */
-  rmc->mp_realuid = (uid_t) m_in.PM_SRV_FORK_UID;
-  rmc->mp_effuid = (uid_t) m_in.PM_SRV_FORK_UID;
-  rmc->mp_realgid = (uid_t) m_in.PM_SRV_FORK_GID;
-  rmc->mp_effgid = (uid_t) m_in.PM_SRV_FORK_GID;
+  rmc->mp_realuid = m_in.m_lsys_pm_srv_fork.uid;
+  rmc->mp_effuid = m_in.m_lsys_pm_srv_fork.uid;
+  rmc->mp_realgid = m_in.m_lsys_pm_srv_fork.gid;
+  rmc->mp_effgid = m_in.m_lsys_pm_srv_fork.gid;
   for (i = 0; i < NR_ITIMERS; i++)
        rmc->mp_interval[i] = 0;        /* reset timer intervals */
 
@@ -210,8 +210,8 @@ int do_srv_fork()
   m.VFS_PM_ENDPT = rmc->mp_endpoint;
   m.VFS_PM_PENDPT = rmp->mp_endpoint;
   m.VFS_PM_CPID = rmc->mp_pid;
-  m.VFS_PM_REUID = m_in.PM_SRV_FORK_UID;
-  m.VFS_PM_REGID = m_in.PM_SRV_FORK_GID;
+  m.VFS_PM_REUID = m_in.m_lsys_pm_srv_fork.uid;
+  m.VFS_PM_REGID = m_in.m_lsys_pm_srv_fork.gid;
 
   tell_vfs(rmc, &m);