[DTrace-devel] [PATCH 14/16] Only perform detach if the probe is attached

Kris Van Hees kris.van.hees at oracle.com
Thu Mar 18 21:54:59 PDT 2021


Signed-off-by: Kris Van Hees <kris.van.hees at oracle.com>
---
 libdtrace/dt_prov_dtrace.c | 6 +++++-
 libdtrace/dt_prov_fbt.c    | 8 ++++++--
 2 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/libdtrace/dt_prov_dtrace.c b/libdtrace/dt_prov_dtrace.c
index fe0b8d86..6f978bd0 100644
--- a/libdtrace/dt_prov_dtrace.c
+++ b/libdtrace/dt_prov_dtrace.c
@@ -308,7 +308,11 @@ static int probe_info(dtrace_hdl_t *dtp, const dt_probe_t *prp,
  */
 static void detach(dtrace_hdl_t *dtp, const dt_probe_t *prp)
 {
-	int	fd;
+	int		fd;
+	tp_probe_t	*tpp = prp->prv_data;
+
+	if (!dt_tp_is_attached(tpp))
+		return;
 
 	dt_tp_detach(dtp, prp->prv_data);
 
diff --git a/libdtrace/dt_prov_fbt.c b/libdtrace/dt_prov_fbt.c
index c344aa4c..1c194ea0 100644
--- a/libdtrace/dt_prov_fbt.c
+++ b/libdtrace/dt_prov_fbt.c
@@ -267,9 +267,13 @@ static int probe_info(dtrace_hdl_t *dtp, const dt_probe_t *prp,
  */
 static void detach(dtrace_hdl_t *dtp, const dt_probe_t *prp)
 {
-	int	fd;
+	tp_probe_t	*tpp = prp->prv_data;
+	int		fd;
+
+	if (!dt_tp_is_attached(tpp))
+		return;
 
-	dt_tp_detach(dtp, prp->prv_data);
+	dt_tp_detach(dtp, tpp);
 
 	fd = open(KPROBE_EVENTS, O_WRONLY | O_APPEND);
 	if (fd == -1)
-- 
2.28.0




More information about the DTrace-devel mailing list