Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 9 Jul 2020 18:34:54 +0000 (UTC)
From:      Mark Johnston <markj@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r363055 - in head: lib/libc/sys sys/kern
Message-ID:  <202007091834.069IYsmL059802@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: markj
Date: Thu Jul  9 18:34:54 2020
New Revision: 363055
URL: https://svnweb.freebsd.org/changeset/base/363055

Log:
  Apply the logic from r363051 to semctl(2) and __sem_base field.
  
  Reported by:	Jeffball <jeffball@grimm-co.com>
  MFC after:	1 week
  Sponsored by:	The FreeBSD Foundation
  Differential Revision:	https://reviews.freebsd.org/D25600

Modified:
  head/lib/libc/sys/semctl.2
  head/sys/kern/sysv_sem.c

Modified: head/lib/libc/sys/semctl.2
==============================================================================
--- head/lib/libc/sys/semctl.2	Thu Jul  9 17:43:25 2020	(r363054)
+++ head/lib/libc/sys/semctl.2	Thu Jul  9 18:34:54 2020	(r363055)
@@ -25,7 +25,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd February 23, 2018
+.Dd July 9, 2020
 .Dt SEMCTL 2
 .Os
 .Sh NAME
@@ -148,7 +148,6 @@ is defined as follows:
 .Bd -literal
 struct semid_ds {
         struct  ipc_perm sem_perm;      /* operation permission struct */
-        struct  sem *__sem_base;  /* kernel data, don't use */
         u_short sem_nsems;      /* number of sems in set */
         time_t  sem_otime;      /* last operation time */
         time_t  sem_ctime;      /* last change time */

Modified: head/sys/kern/sysv_sem.c
==============================================================================
--- head/sys/kern/sysv_sem.c	Thu Jul  9 17:43:25 2020	(r363054)
+++ head/sys/kern/sysv_sem.c	Thu Jul  9 18:34:54 2020	(r363055)
@@ -798,6 +798,13 @@ kern_semctl(struct thread *td, int semid, int semnum, 
 		bcopy(&semakptr->u, arg->buf, sizeof(struct semid_ds));
 		if (cred->cr_prison != semakptr->cred->cr_prison)
 			arg->buf->sem_perm.key = IPC_PRIVATE;
+
+		/*
+		 * Try to hide the fact that the structure layout is shared by
+		 * both the kernel and userland.  This pointer is not useful to
+		 * userspace.
+		 */
+		arg->buf->__sem_base = NULL;
 		break;
 
 	case GETNCNT:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202007091834.069IYsmL059802>