svn commit: r312658 - in head/sys/cddl: contrib/opensolaris/uts/common/dtrace contrib/opensolaris/uts/common/sys dev/dtrace

Mark Johnston markj at FreeBSD.org
Mon Jan 23 02:21:07 UTC 2017


Author: markj
Date: Mon Jan 23 02:21:06 2017
New Revision: 312658
URL: https://svnweb.freebsd.org/changeset/base/312658

Log:
  Remove the DTRACEHIOC_ADD ioctl.
  
  This ioctl has been considered legacy by upstream since the DTrace code
  was first imported, and is unused. The removal also allows some
  simplification of dtrace_helper_slurp().
  
  Also remove a bogus copyout in the DTRACEHIOC_ADDDOF handler. Due to a
  bug, it would overwrite an in-memory copy of the DOF header rather than
  the passed-in DOF helper. Moreover, DTRACEHIOC_ADDDOF already copies the
  helper back out automatically since its argument has the IOC_OUT attribute.

Modified:
  head/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c
  head/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace.h
  head/sys/cddl/dev/dtrace/dtrace_ioctl.c

Modified: head/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c
==============================================================================
--- head/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c	Mon Jan 23 01:21:39 2017	(r312657)
+++ head/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c	Mon Jan 23 02:21:06 2017	(r312658)
@@ -16255,18 +16255,11 @@ dtrace_helper_provider_validate(dof_hdr_
 }
 
 static int
-#ifdef __FreeBSD__
 dtrace_helper_slurp(dof_hdr_t *dof, dof_helper_t *dhp, struct proc *p)
-#else
-dtrace_helper_slurp(dof_hdr_t *dof, dof_helper_t *dhp)
-#endif
 {
 	dtrace_helpers_t *help;
 	dtrace_vstate_t *vstate;
 	dtrace_enabling_t *enab = NULL;
-#ifndef __FreeBSD__
-	proc_t *p = curproc;
-#endif
 	int i, gen, rv, nhelpers = 0, nprovs = 0, destroy = 1;
 	uintptr_t daddr = (uintptr_t)dof;
 
@@ -16277,8 +16270,8 @@ dtrace_helper_slurp(dof_hdr_t *dof, dof_
 
 	vstate = &help->dthps_vstate;
 
-	if ((rv = dtrace_dof_slurp(dof, vstate, NULL, &enab,
-	    dhp != NULL ? dhp->dofhp_addr : 0, B_FALSE)) != 0) {
+	if ((rv = dtrace_dof_slurp(dof, vstate, NULL, &enab, dhp->dofhp_addr,
+	    B_FALSE)) != 0) {
 		dtrace_dof_destroy(dof);
 		return (rv);
 	}
@@ -16286,22 +16279,20 @@ dtrace_helper_slurp(dof_hdr_t *dof, dof_
 	/*
 	 * Look for helper providers and validate their descriptions.
 	 */
-	if (dhp != NULL) {
-		for (i = 0; i < dof->dofh_secnum; i++) {
-			dof_sec_t *sec = (dof_sec_t *)(uintptr_t)(daddr +
-			    dof->dofh_secoff + i * dof->dofh_secsize);
-
-			if (sec->dofs_type != DOF_SECT_PROVIDER)
-				continue;
+	for (i = 0; i < dof->dofh_secnum; i++) {
+		dof_sec_t *sec = (dof_sec_t *)(uintptr_t)(daddr +
+		    dof->dofh_secoff + i * dof->dofh_secsize);
 
-			if (dtrace_helper_provider_validate(dof, sec) != 0) {
-				dtrace_enabling_destroy(enab);
-				dtrace_dof_destroy(dof);
-				return (-1);
-			}
+		if (sec->dofs_type != DOF_SECT_PROVIDER)
+			continue;
 
-			nprovs++;
+		if (dtrace_helper_provider_validate(dof, sec) != 0) {
+			dtrace_enabling_destroy(enab);
+			dtrace_dof_destroy(dof);
+			return (-1);
 		}
+
+		nprovs++;
 	}
 
 	/*
@@ -16342,7 +16333,7 @@ dtrace_helper_slurp(dof_hdr_t *dof, dof_
 	gen = help->dthps_generation++;
 	dtrace_enabling_destroy(enab);
 
-	if (dhp != NULL && nprovs > 0) {
+	if (nprovs > 0) {
 		/*
 		 * Now that this is in-kernel, we change the sense of the
 		 * members:  dofhp_dof denotes the in-kernel copy of the DOF

Modified: head/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace.h
==============================================================================
--- head/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace.h	Mon Jan 23 01:21:39 2017	(r312657)
+++ head/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace.h	Mon Jan 23 02:21:06 2017	(r312658)
@@ -1410,7 +1410,6 @@ typedef struct {
 #define	DTRACEHIOC_REMOVE	(DTRACEHIOC | 2)	/* remove helper */
 #define	DTRACEHIOC_ADDDOF	(DTRACEHIOC | 3)	/* add helper DOF */
 #else
-#define	DTRACEHIOC_ADD		_IOWR('z', 1, dof_hdr_t)/* add helper */
 #define	DTRACEHIOC_REMOVE	_IOW('z', 2, int)	/* remove helper */
 #define	DTRACEHIOC_ADDDOF	_IOWR('z', 3, dof_helper_t)/* add helper DOF */
 #endif

Modified: head/sys/cddl/dev/dtrace/dtrace_ioctl.c
==============================================================================
--- head/sys/cddl/dev/dtrace/dtrace_ioctl.c	Mon Jan 23 01:21:39 2017	(r312657)
+++ head/sys/cddl/dev/dtrace/dtrace_ioctl.c	Mon Jan 23 02:21:06 2017	(r312658)
@@ -44,10 +44,8 @@ dtrace_ioctl_helper(struct cdev *dev, u_
 	case DTRACEHIOC_ADDDOF:
 		dhp = (dof_helper_t *)addr;
 		addr = (caddr_t)(uintptr_t)dhp->dofhp_dof;
-		/* FALLTHROUGH */
-	case DTRACEHIOC_ADD:
-		p = curproc;
-		if (dhp == NULL || p->p_pid == dhp->dofhp_pid) {
+		if (p->p_pid == dhp->dofhp_pid) {
+			p = curproc;
 			dof = dtrace_dof_copyin((uintptr_t)addr, &rval);
 		} else {
 			p = pfind(dhp->dofhp_pid);
@@ -72,10 +70,7 @@ dtrace_ioctl_helper(struct cdev *dev, u_
 
 		mutex_enter(&dtrace_lock);
 		if ((rval = dtrace_helper_slurp(dof, dhp, p)) != -1) {
-			if (dhp != NULL) {
-				dhp->dofhp_gen = rval;
-				copyout(dhp, addr, sizeof(*dhp));
-			}
+			dhp->dofhp_gen = rval;
 			rval = 0;
 		} else {
 			rval = EINVAL;


More information about the svn-src-all mailing list