summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/libc/sys/msgctl.24
-rw-r--r--sys/kern/sysv_msg.c7
2 files changed, 8 insertions, 3 deletions
diff --git a/lib/libc/sys/msgctl.2 b/lib/libc/sys/msgctl.2
index 1ca61ed77b2a..745b365c4d93 100644
--- a/lib/libc/sys/msgctl.2
+++ b/lib/libc/sys/msgctl.2
@@ -31,7 +31,7 @@
.\"
.\" $FreeBSD$
.\"/
-.Dd July 9, 2009
+.Dd July 9, 2020
.Dt MSGCTL 2
.Os
.Sh NAME
@@ -63,8 +63,6 @@ and contains (amongst others) the following members:
.Bd -literal
struct msqid_ds {
struct ipc_perm msg_perm; /* msg queue permission bits */
- struct msg *__msg_first; /* kernel data, don't use */
- struct msg *__msg_last; /* kernel data, don't use */
msglen_t msg_cbytes; /* number of bytes in use on the queue */
msgqnum_t msg_qnum; /* number of msgs in the queue */
msglen_t msg_qbytes; /* max # of bytes on the queue */
diff --git a/sys/kern/sysv_msg.c b/sys/kern/sysv_msg.c
index de6faafde286..aab4551357c2 100644
--- a/sys/kern/sysv_msg.c
+++ b/sys/kern/sysv_msg.c
@@ -613,6 +613,13 @@ kern_msgctl(struct thread *td, int msqid, int cmd, struct msqid_ds *msqbuf)
*msqbuf = msqkptr->u;
if (td->td_ucred->cr_prison != msqkptr->cred->cr_prison)
msqbuf->msg_perm.key = IPC_PRIVATE;
+
+ /*
+ * Try to hide the fact that the structure layout is shared by
+ * both the kernel and userland. These pointers are not useful
+ * to userspace.
+ */
+ msqbuf->__msg_first = msqbuf->__msg_last = NULL;
break;
default: