From: Matthew Dillon Date: Thu, 18 Nov 2010 17:20:23 +0000 (-0800) Subject: kernel - Fix global counter used in lockf assertions X-Git-Url: http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff_plain/20b10249803190a9d3299b2e6f2a71c4fe2918e4 kernel - Fix global counter used in lockf assertions * lockf elements can be accessed MP. * This may fix the 'panic: assertion: lf_global_counter>=0 in lf_destroy_range' panic. Reported-by: Peter Avalos --- diff --git a/sys/kern/kern_lockf.c b/sys/kern/kern_lockf.c index f660b20..33cecf0 100644 --- a/sys/kern/kern_lockf.c +++ b/sys/kern/kern_lockf.c @@ -812,7 +812,7 @@ lf_alloc_range(void) struct lockf_range *range; #ifdef INVARIANTS - lf_global_counter++; + atomic_add_int(&lf_global_counter, 1); #endif range = kmalloc(sizeof(struct lockf_range), M_LOCKF, M_WAITOK); range->lf_owner = NULL; @@ -853,8 +853,8 @@ lf_destroy_range(struct lockf_range *range) range->lf_start, range->lf_end); kfree(range, M_LOCKF); #ifdef INVARIANTS - lf_global_counter--; - KKASSERT(lf_global_counter>=0); + atomic_add_int(&lf_global_counter, -1); + KKASSERT(lf_global_counter >= 0); #endif }