Module Name: src Committed By: riastradh Date: Sun Sep 8 15:33:35 UTC 2013
Modified Files: src/sys/external/bsd/drm2/include/linux [riastradh-drm2]: kref.h Log Message: Fix sense of atomic_cas loop condition and use kassertmsg for krefs. To generate a diff of this commit: cvs rdiff -u -r1.1.2.2 -r1.1.2.3 \ src/sys/external/bsd/drm2/include/linux/kref.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/external/bsd/drm2/include/linux/kref.h diff -u src/sys/external/bsd/drm2/include/linux/kref.h:1.1.2.2 src/sys/external/bsd/drm2/include/linux/kref.h:1.1.2.3 --- src/sys/external/bsd/drm2/include/linux/kref.h:1.1.2.2 Wed Jul 24 01:51:36 2013 +++ src/sys/external/bsd/drm2/include/linux/kref.h Sun Sep 8 15:33:35 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: kref.h,v 1.1.2.2 2013/07/24 01:51:36 riastradh Exp $ */ +/* $NetBSD: kref.h,v 1.1.2.3 2013/09/08 15:33:35 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -54,7 +54,7 @@ kref_get(struct kref *kref) const unsigned int count __unused = atomic_inc_uint_nv(&kref->kr_count); - KASSERT(count > 1); + KASSERTMSG((count > 1), "getting released kref"); } static inline int @@ -64,9 +64,10 @@ kref_sub(struct kref *kref, unsigned int do { old = kref->kr_count; - KASSERT(count <= old); + KASSERTMSG((count <= old), "overreleasing kref: %u - %u", + old, count); new = (old - count); - } while (atomic_cas_uint(&kref->kr_count, old, new) == old); + } while (atomic_cas_uint(&kref->kr_count, old, new) != old); if (new == 0) { (*release)(kref);