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