summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2001-07-31 17:44:57 +0000
committerjhb <jhb@FreeBSD.org>2001-07-31 17:44:57 +0000
commita0a2e280bd15187238579a3c7f0d0574b83b3984 (patch)
tree83492ab5da4c9a95730da989c02381b251f17259 /sys
parentc1e081808c30513d7665c36860a5d832f480b19e (diff)
downloadFreeBSD-src-a0a2e280bd15187238579a3c7f0d0574b83b3984.zip
FreeBSD-src-a0a2e280bd15187238579a3c7f0d0574b83b3984.tar.gz
- Fix panicstr checks to explicitly check against NULL.
- Add a few more panicstr checks so that we don't panic recursively. Requested by: sheldonh (2)
Diffstat (limited to 'sys')
-rw-r--r--sys/kern/subr_witness.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/sys/kern/subr_witness.c b/sys/kern/subr_witness.c
index c4744b3..18b7df6 100644
--- a/sys/kern/subr_witness.c
+++ b/sys/kern/subr_witness.c
@@ -355,7 +355,7 @@ witness_init(struct lock_object *lock)
if (lock_cur_cnt > lock_max_cnt)
lock_max_cnt = lock_cur_cnt;
mtx_unlock(&all_mtx);
- if (!witness_cold && !witness_dead &&
+ if (!witness_cold && !witness_dead && panicstr == NULL &&
(lock->lo_flags & LO_WITNESS) != 0)
lock->lo_witness = enroll(lock->lo_name, class);
else
@@ -469,7 +469,7 @@ witness_lock(struct lock_object *lock, int flags, const char *file, int line)
#endif /* DDB */
if (witness_cold || witness_dead || lock->lo_witness == NULL ||
- panicstr)
+ panicstr != NULL)
return;
w = lock->lo_witness;
class = lock->lo_class;
@@ -723,7 +723,7 @@ witness_unlock(struct lock_object *lock, int flags, const char *file, int line)
int i, j;
if (witness_cold || witness_dead || lock->lo_witness == NULL ||
- panicstr)
+ panicstr != NULL)
return;
p = curproc;
class = lock->lo_class;
@@ -821,7 +821,7 @@ witness_sleep(int check_only, struct lock_object *lock, const char *file,
critical_t savecrit;
int i, n;
- if (witness_dead || panicstr)
+ if (witness_dead || panicstr != NULL)
return (0);
KASSERT(!witness_cold, ("%s: witness_cold\n", __func__));
n = 0;
@@ -872,7 +872,7 @@ enroll(const char *description, struct lock_class *lock_class)
{
struct witness *w;
- if (!witness_watch || witness_dead)
+ if (!witness_watch || witness_dead || panicstr != NULL)
return (NULL);
if ((lock_class->lc_flags & LC_SPINLOCK) && witness_skipspin)
@@ -1309,7 +1309,7 @@ witness_save(struct lock_object *lock, const char **filep, int *linep)
struct lock_instance *instance;
KASSERT(!witness_cold, ("%s: witness_cold\n", __func__));
- if (lock->lo_witness == NULL || witness_dead)
+ if (lock->lo_witness == NULL || witness_dead || panicstr != NULL)
return;
KASSERT(lock->lo_class->lc_flags & LC_SLEEPLOCK,
@@ -1329,7 +1329,7 @@ witness_restore(struct lock_object *lock, const char *file, int line)
struct lock_instance *instance;
KASSERT(!witness_cold, ("%s: witness_cold\n", __func__));
- if (lock->lo_witness == NULL || witness_dead)
+ if (lock->lo_witness == NULL || witness_dead || panicstr != NULL)
return;
KASSERT(lock->lo_class->lc_flags & LC_SLEEPLOCK,
@@ -1351,7 +1351,7 @@ witness_assert(struct lock_object *lock, int flags, const char *file, int line)
#ifdef INVARIANT_SUPPORT
struct lock_instance *instance;
- if (lock->lo_witness == NULL || witness_dead)
+ if (lock->lo_witness == NULL || witness_dead || panicstr != NULL)
return;
if ((lock->lo_class->lc_flags & LC_SLEEPLOCK) != 0)
OpenPOWER on IntegriCloud