- dnp->dn_refcount--;
- if (dnp->dn_refcount < 0) {
- panic("devfs_rele_node: devnode with a negative refcount!\n");
- } else if ((dnp->dn_refcount == 0) && (dnp->dn_lflags & DN_DELETE)) {
+ os_ref_count_t rc = os_ref_release_locked_raw(&dnp->dn_refcount, &devfs_refgrp);
+ if (rc < 1) {
+ panic("devfs_rele_node: devnode without a refcount!\n");
+ } else if ((rc == 1) && (dnp->dn_lflags & DN_DELETE)) {
+ /* release final reference from dev_add_node */
+ (void) os_ref_release_locked_raw(&dnp->dn_refcount, &devfs_refgrp);