summaryrefslogtreecommitdiff
path: root/sys/dev
diff options
context:
space:
mode:
authorxtraeme <xtraeme@NetBSD.org>2007-09-08 03:37:51 +0000
committerxtraeme <xtraeme@NetBSD.org>2007-09-08 03:37:51 +0000
commit83b57478edb2c85d6f76de2bce14f863b22d7116 (patch)
tree50d0e350a489cf7481c264e2e7025bf1700f1c5f /sys/dev
parent10fa1cb8366782eec76db1646b4d4dc0aa98fb5d (diff)
sysmon_envsys_register: only call sme_event_unregister_all when any
other error than EEXIST is returned.
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/sysmon/sysmon_envsys.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/sys/dev/sysmon/sysmon_envsys.c b/sys/dev/sysmon/sysmon_envsys.c
index 1f7d31ee9ab..ccfb18dedc0 100644
--- a/sys/dev/sysmon/sysmon_envsys.c
+++ b/sys/dev/sysmon/sysmon_envsys.c
@@ -1,4 +1,4 @@
-/* $NetBSD: sysmon_envsys.c,v 1.58 2007/09/08 03:17:38 xtraeme Exp $ */
+/* $NetBSD: sysmon_envsys.c,v 1.59 2007/09/08 03:37:51 xtraeme Exp $ */
/*-
* Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -75,7 +75,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: sysmon_envsys.c,v 1.58 2007/09/08 03:17:38 xtraeme Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sysmon_envsys.c,v 1.59 2007/09/08 03:37:51 xtraeme Exp $");
#include <sys/param.h>
#include <sys/types.h>
@@ -88,6 +88,7 @@ __KERNEL_RCSID(0, "$NetBSD: sysmon_envsys.c,v 1.58 2007/09/08 03:17:38 xtraeme E
#include <sys/mutex.h>
#include <sys/kmem.h>
+#define ENVSYS_DEBUG
#include <dev/sysmon/sysmonvar.h>
#include <dev/sysmon/sysmon_envsysvar.h>
#include <dev/sysmon/sysmon_taskq.h>
@@ -518,7 +519,11 @@ out2:
SLIST_REMOVE_HEAD(&sme_evdrv_list, evdrv_head);
kmem_free(sme_evdrv, sizeof(*sme_evdrv));
}
- sme_event_unregister_all(sme->sme_name);
+ if (error != EEXIST) {
+ mutex_enter(&sme_mtx);
+ sme_event_unregister_all(sme->sme_name);
+ mutex_exit(&sme_mtx);
+ }
sysmon_envsys_destroy_plist(array);
return error;
}