diff --git a/ipc/msg.c b/ipc/msg.c
index 3400012..94690fb 100644
--- a/ipc/msg.c
+++ b/ipc/msg.c
@@ -591,22 +591,14 @@ static int copy_compat_msqid_from_user(struct msqid64_ds *out, void __user *buf,
 	memset(out, 0, sizeof(*out));
 	if (version == IPC_64) {
 		struct compat_msqid64_ds *p = buf;
-		struct compat_ipc64_perm v;
-		if (copy_from_user(&v, &p->msg_perm, sizeof(v)))
+		if (get_compat_ipc64_perm(&out->msg_perm, &p->msg_perm))
 			return -EFAULT;
-		out->msg_perm.uid = v.uid;
-		out->msg_perm.gid = v.gid;
-		out->msg_perm.mode = v.mode;
 		if (get_user(out->msg_qbytes, &p->msg_qbytes))
 			return -EFAULT;
 	} else {
 		struct compat_msqid_ds *p = buf;
-		struct compat_ipc_perm v;
-		if (copy_from_user(&v, &p->msg_perm, sizeof(v)))
+		if (get_compat_ipc_perm(&out->msg_perm, &p->msg_perm))
 			return -EFAULT;
-		out->msg_perm.uid = v.uid;
-		out->msg_perm.gid = v.gid;
-		out->msg_perm.mode = v.mode;
 		if (get_user(out->msg_qbytes, &p->msg_qbytes))
 			return -EFAULT;
 	}
@@ -619,13 +611,7 @@ static int copy_compat_msqid_to_user(void __user *buf, struct msqid64_ds *in,
 	if (version == IPC_64) {
 		struct compat_msqid64_ds v;
 		memset(&v, 0, sizeof(v));
-		v.msg_perm.key = in->msg_perm.key;
-		v.msg_perm.uid = in->msg_perm.uid;
-		v.msg_perm.gid = in->msg_perm.gid;
-		v.msg_perm.cuid = in->msg_perm.cuid;
-		v.msg_perm.cgid = in->msg_perm.cgid;
-		v.msg_perm.mode = in->msg_perm.mode;
-		v.msg_perm.seq = in->msg_perm.seq;
+		to_compat_ipc64_perm(&v.msg_perm, &in->msg_perm);
 		v.msg_stime = in->msg_stime;
 		v.msg_rtime = in->msg_rtime;
 		v.msg_ctime = in->msg_ctime;
@@ -638,13 +624,7 @@ static int copy_compat_msqid_to_user(void __user *buf, struct msqid64_ds *in,
 	} else {
 		struct compat_msqid_ds v;
 		memset(&v, 0, sizeof(v));
-		v.msg_perm.key = in->msg_perm.key;
-		SET_UID(v.msg_perm.uid, in->msg_perm.uid);
-		SET_GID(v.msg_perm.gid, in->msg_perm.gid);
-		SET_UID(v.msg_perm.cuid, in->msg_perm.cuid);
-		SET_GID(v.msg_perm.cgid, in->msg_perm.cgid);
-		v.msg_perm.mode = in->msg_perm.mode;
-		v.msg_perm.seq = in->msg_perm.seq;
+		to_compat_ipc_perm(&v.msg_perm, &in->msg_perm);
 		v.msg_stime = in->msg_stime;
 		v.msg_rtime = in->msg_rtime;
 		v.msg_ctime = in->msg_ctime;
diff --git a/ipc/shm.c b/ipc/shm.c
index 87334ee..2e31545 100644
--- a/ipc/shm.c
+++ b/ipc/shm.c
@@ -1161,13 +1161,7 @@ static int copy_compat_shmid_to_user(void __user *buf, struct shmid64_ds *in,
 	if (version == IPC_64) {
 		struct compat_shmid64_ds v;
 		memset(&v, 0, sizeof(v));
-		v.shm_perm.key = in->shm_perm.key;
-		v.shm_perm.uid = in->shm_perm.uid;
-		v.shm_perm.gid = in->shm_perm.gid;
-		v.shm_perm.cuid = in->shm_perm.cuid;
-		v.shm_perm.cgid = in->shm_perm.cgid;
-		v.shm_perm.mode = in->shm_perm.mode;
-		v.shm_perm.seq = in->shm_perm.seq;
+		to_compat_ipc64_perm(&v.shm_perm, &in->shm_perm);
 		v.shm_atime = in->shm_atime;
 		v.shm_dtime = in->shm_dtime;
 		v.shm_ctime = in->shm_ctime;
@@ -1179,13 +1173,8 @@ static int copy_compat_shmid_to_user(void __user *buf, struct shmid64_ds *in,
 	} else {
 		struct compat_shmid_ds v;
 		memset(&v, 0, sizeof(v));
+		to_compat_ipc_perm(&v.shm_perm, &in->shm_perm);
 		v.shm_perm.key = in->shm_perm.key;
-		SET_UID(v.shm_perm.uid, in->shm_perm.uid);
-		SET_GID(v.shm_perm.gid, in->shm_perm.gid);
-		SET_UID(v.shm_perm.cuid, in->shm_perm.cuid);
-		SET_GID(v.shm_perm.cgid, in->shm_perm.cgid);
-		v.shm_perm.mode = in->shm_perm.mode;
-		v.shm_perm.seq = in->shm_perm.seq;
 		v.shm_atime = in->shm_atime;
 		v.shm_dtime = in->shm_dtime;
 		v.shm_ctime = in->shm_ctime;
@@ -1203,22 +1192,11 @@ static int copy_compat_shmid_from_user(struct shmid64_ds *out, void __user *buf,
 	memset(out, 0, sizeof(*out));
 	if (version == IPC_64) {
 		struct compat_shmid64_ds *p = buf;
-		struct compat_ipc64_perm v;
-		if (copy_from_user(&v, &p->shm_perm, sizeof(v)))
-			return -EFAULT;
-		out->shm_perm.uid = v.uid;
-		out->shm_perm.gid = v.gid;
-		out->shm_perm.mode = v.mode;
+		return get_compat_ipc64_perm(&out->shm_perm, &p->shm_perm);
 	} else {
 		struct compat_shmid_ds *p = buf;
-		struct compat_ipc_perm v;
-		if (copy_from_user(&v, &p->shm_perm, sizeof(v)))
-			return -EFAULT;
-		out->shm_perm.uid = v.uid;
-		out->shm_perm.gid = v.gid;
-		out->shm_perm.mode = v.mode;
+		return get_compat_ipc_perm(&out->shm_perm, &p->shm_perm);
 	}
-	return 0;
 }
 
 COMPAT_SYSCALL_DEFINE3(shmctl, int, shmid, int, cmd, void __user *, uptr)
