diff --git a/ipc/msg.c b/ipc/msg.c index 36ba12cd42bb..8c38bffe509f 100644 --- a/ipc/msg.c +++ b/ipc/msg.c @@ -429,6 +429,7 @@ static int msgctl_down(struct ipc_namespace *ns, int msqid, int cmd, switch (cmd) { case IPC_RMID: + #ifdef CONFIG_RSBAC rsbac_target_id.ipc.type = I_msg; rsbac_target_id.ipc.id.id_nr = msqid; @@ -477,9 +478,9 @@ static int msgctl_down(struct ipc_namespace *ns, int msqid, int cmd, #ifdef CONFIG_RSBAC rsbac_target_id.ipc.type = I_msg; rsbac_target_id.ipc.id.id_nr = msqid; - if (__kuid_val(ipcp->uid) != msqid64.msg_perm.uid) { + if (__kuid_val(ipcp->uid) != msqid64->msg_perm.uid) { rsbac_pr_debug(aef, "calling ADF\n"); - rsbac_attribute_value.owner = msqid64.msg_perm.uid; + rsbac_attribute_value.owner = msqid64->msg_perm.uid; if (!rsbac_adf_request(R_CHANGE_OWNER, task_pid(current), T_IPC, @@ -490,9 +491,9 @@ static int msgctl_down(struct ipc_namespace *ns, int msqid, int cmd, goto out_unlock1; } } - if (__kgid_val(ipcp->gid) != msqid64.msg_perm.gid) { + if (__kgid_val(ipcp->gid) != msqid64->msg_perm.gid) { rsbac_pr_debug(aef, "calling ADF\n"); - rsbac_attribute_value.group = msqid64.msg_perm.gid; + rsbac_attribute_value.group = msqid64->msg_perm.gid; if (!rsbac_adf_request(R_CHANGE_GROUP, task_pid(current), T_IPC, @@ -503,9 +504,9 @@ static int msgctl_down(struct ipc_namespace *ns, int msqid, int cmd, goto out_unlock1; } } - if (ipcp->mode != ((ipcp->mode & ~S_IRWXUGO) | (S_IRWXUGO & msqid64.msg_perm.mode))) { + if (ipcp->mode != ((ipcp->mode & ~S_IRWXUGO) | (S_IRWXUGO & msqid64->msg_perm.mode))) { rsbac_pr_debug(aef, "calling ADF\n"); - rsbac_attribute_value.mode = (S_IRWXUGO & msqid64.msg_perm.mode); + rsbac_attribute_value.mode = (S_IRWXUGO & msqid64->msg_perm.mode); if (!rsbac_adf_request(R_ALTER, task_pid(current), T_IPC, diff --git a/ipc/sem.c b/ipc/sem.c index a38b591eb7cf..abad94bcbf96 100644 --- a/ipc/sem.c +++ b/ipc/sem.c @@ -1724,9 +1724,9 @@ static int semctl_down(struct ipc_namespace *ns, int semid, #ifdef CONFIG_RSBAC_IPC_SEM rsbac_target_id.ipc.type = I_sem; rsbac_target_id.ipc.id.id_nr = semid; - if (__kuid_val(ipcp->uid) != semid64.sem_perm.uid) { + if (__kuid_val(ipcp->uid) != semid64->sem_perm.uid) { rsbac_pr_debug(aef, "calling ADF\n"); - rsbac_attribute_value.owner = semid64.sem_perm.uid; + rsbac_attribute_value.owner = semid64->sem_perm.uid; if (!rsbac_adf_request(R_CHANGE_OWNER, task_pid(current), T_IPC, @@ -1737,9 +1737,9 @@ static int semctl_down(struct ipc_namespace *ns, int semid, goto out_unlock1; } } - if (__kgid_val(ipcp->gid) != semid64.sem_perm.gid) { + if (__kgid_val(ipcp->gid) != semid64->sem_perm.gid) { rsbac_pr_debug(aef, "calling ADF\n"); - rsbac_attribute_value.group = semid64.sem_perm.gid; + rsbac_attribute_value.group = semid64->sem_perm.gid; if (!rsbac_adf_request(R_CHANGE_GROUP, task_pid(current), T_IPC, @@ -1750,9 +1750,9 @@ static int semctl_down(struct ipc_namespace *ns, int semid, goto out_unlock1; } } - if (ipcp->mode != ((ipcp->mode & ~S_IRWXUGO) | (S_IRWXUGO & semid64.sem_perm.mode))) { + if (ipcp->mode != ((ipcp->mode & ~S_IRWXUGO) | (S_IRWXUGO & semid64->sem_perm.mode))) { rsbac_pr_debug(aef, "calling ADF\n"); - rsbac_attribute_value.mode = (S_IRWXUGO & semid64.sem_perm.mode); + rsbac_attribute_value.mode = (S_IRWXUGO & semid64->sem_perm.mode); if (!rsbac_adf_request(R_ALTER, task_pid(current), T_IPC, diff --git a/ipc/shm.c b/ipc/shm.c index 0bc56c31b4f7..d9361d65fdf4 100644 --- a/ipc/shm.c +++ b/ipc/shm.c @@ -1170,7 +1170,7 @@ SYSCALL_DEFINE3(shmctl, int, shmid, int, cmd, struct shmid_ds __user *, buf) rsbac_attribute_value)) { return -EPERM; } - err = shmctl_down(ns, shmid, cmd, buf, version); + err = shmctl_down(ns, shmid, cmd, &sem64); if (!err) { rsbac_target_id.ipc.type = I_shm; rsbac_target_id.ipc.id.id_nr = shmid;