Message type for PM_SRV_FORK
Change-Id: I0e112da380805d40901a4041fd82da6e842e1f9b
This commit is contained in:
parent
7fb63c6182
commit
594521214a
4 changed files with 17 additions and 12 deletions
|
@ -85,10 +85,6 @@
|
||||||
#define PM_SIG_SET m2_sigset /* sigset_t */
|
#define PM_SIG_SET m2_sigset /* sigset_t */
|
||||||
#define PM_SIG_CTX m2_p1 /* struct sigcontext * */
|
#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. */
|
/* Field names for the getuid(2) call. */
|
||||||
#define PM_GETUID_EUID m1_i1 /* uid_t */
|
#define PM_GETUID_EUID m1_i1 /* uid_t */
|
||||||
|
|
||||||
|
|
|
@ -495,6 +495,14 @@ typedef struct {
|
||||||
} mess_pm_lsys_getprocnr;
|
} mess_pm_lsys_getprocnr;
|
||||||
_ASSERT_MSG_SIZE(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 {
|
typedef struct {
|
||||||
endpoint_t endpt;
|
endpoint_t endpt;
|
||||||
cp_grant_id_t grant;
|
cp_grant_id_t grant;
|
||||||
|
@ -1018,6 +1026,7 @@ typedef struct {
|
||||||
|
|
||||||
mess_lsys_pm_getepinfo m_lsys_pm_getepinfo;
|
mess_lsys_pm_getepinfo m_lsys_pm_getepinfo;
|
||||||
mess_lsys_pm_getprocnr m_lsys_pm_getprocnr;
|
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_checkperms m_lsys_vfs_checkperms;
|
||||||
mess_lsys_vfs_copyfd m_lsys_vfs_copyfd;
|
mess_lsys_vfs_copyfd m_lsys_vfs_copyfd;
|
||||||
|
|
|
@ -8,7 +8,7 @@ srv_fork(uid_t reuid, gid_t regid)
|
||||||
message m;
|
message m;
|
||||||
|
|
||||||
memset(&m, 0, sizeof(m));
|
memset(&m, 0, sizeof(m));
|
||||||
m.PM_SRV_FORK_UID = (int) reuid;
|
m.m_lsys_pm_srv_fork.uid = reuid;
|
||||||
m.PM_SRV_FORK_GID = (int) regid;
|
m.m_lsys_pm_srv_fork.gid = regid;
|
||||||
return _taskcall(PM_PROC_NR, PM_SRV_FORK, &m);
|
return _taskcall(PM_PROC_NR, PM_SRV_FORK, &m);
|
||||||
}
|
}
|
||||||
|
|
|
@ -194,10 +194,10 @@ int do_srv_fork()
|
||||||
rmc->mp_exitstatus = 0;
|
rmc->mp_exitstatus = 0;
|
||||||
rmc->mp_sigstatus = 0;
|
rmc->mp_sigstatus = 0;
|
||||||
rmc->mp_endpoint = child_ep; /* passed back by VM */
|
rmc->mp_endpoint = child_ep; /* passed back by VM */
|
||||||
rmc->mp_realuid = (uid_t) m_in.PM_SRV_FORK_UID;
|
rmc->mp_realuid = m_in.m_lsys_pm_srv_fork.uid;
|
||||||
rmc->mp_effuid = (uid_t) m_in.PM_SRV_FORK_UID;
|
rmc->mp_effuid = m_in.m_lsys_pm_srv_fork.uid;
|
||||||
rmc->mp_realgid = (uid_t) m_in.PM_SRV_FORK_GID;
|
rmc->mp_realgid = m_in.m_lsys_pm_srv_fork.gid;
|
||||||
rmc->mp_effgid = (uid_t) m_in.PM_SRV_FORK_GID;
|
rmc->mp_effgid = m_in.m_lsys_pm_srv_fork.gid;
|
||||||
for (i = 0; i < NR_ITIMERS; i++)
|
for (i = 0; i < NR_ITIMERS; i++)
|
||||||
rmc->mp_interval[i] = 0; /* reset timer intervals */
|
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_ENDPT = rmc->mp_endpoint;
|
||||||
m.VFS_PM_PENDPT = rmp->mp_endpoint;
|
m.VFS_PM_PENDPT = rmp->mp_endpoint;
|
||||||
m.VFS_PM_CPID = rmc->mp_pid;
|
m.VFS_PM_CPID = rmc->mp_pid;
|
||||||
m.VFS_PM_REUID = m_in.PM_SRV_FORK_UID;
|
m.VFS_PM_REUID = m_in.m_lsys_pm_srv_fork.uid;
|
||||||
m.VFS_PM_REGID = m_in.PM_SRV_FORK_GID;
|
m.VFS_PM_REGID = m_in.m_lsys_pm_srv_fork.gid;
|
||||||
|
|
||||||
tell_vfs(rmc, &m);
|
tell_vfs(rmc, &m);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue