The branch stable/14 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=6750c124c71c83eb6c4a6a349572ec24d7668441
commit 6750c124c71c83eb6c4a6a349572ec24d7668441 Author: Mark Johnston <ma...@freebsd.org> AuthorDate: 2025-07-03 13:10:49 +0000 Commit: Konstantin Belousov <k...@freebsd.org> CommitDate: 2025-07-09 00:28:29 +0000 md: Restore guards in mddestroy() (cherry picked from commit 5ae9f8e9ac5e1307fed4f7f2549347576f01b3fa) --- sys/dev/md/md.c | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/sys/dev/md/md.c b/sys/dev/md/md.c index e89c5e858c32..95926706443b 100644 --- a/sys/dev/md/md.c +++ b/sys/dev/md/md.c @@ -1561,19 +1561,26 @@ mddestroy(struct md_s *sc, struct thread *td) mtx_destroy(&sc->queue_mtx); switch (sc->type) { case MD_VNODE: - vn_lock(sc->s_vnode.vnode, LK_EXCLUSIVE | LK_RETRY); - sc->s_vnode.vnode->v_vflag &= ~VV_MD; - VOP_UNLOCK(sc->s_vnode.vnode); - (void)vn_close(sc->s_vnode.vnode, sc->flags & MD_READONLY ? - FREAD : (FREAD|FWRITE), sc->cred, td); - kva_free(sc->s_vnode.kva, maxphys + PAGE_SIZE); + if (sc->s_vnode.vnode != NULL) { + vn_lock(sc->s_vnode.vnode, LK_EXCLUSIVE | LK_RETRY); + sc->s_vnode.vnode->v_vflag &= ~VV_MD; + VOP_UNLOCK(sc->s_vnode.vnode); + (void)vn_close(sc->s_vnode.vnode, + sc->flags & MD_READONLY ? FREAD : (FREAD|FWRITE), + sc->cred, td); + } + if (sc->s_vnode.kva != 0) + kva_free(sc->s_vnode.kva, maxphys + PAGE_SIZE); break; case MD_SWAP: - vm_object_deallocate(sc->s_swap.object); + if (sc->s_swap.object != NULL) + vm_object_deallocate(sc->s_swap.object); break; case MD_MALLOC: - destroy_indir(sc, sc->s_malloc.indir); - uma_zdestroy(sc->s_malloc.uma); + if (sc->s_malloc.indir != NULL) + destroy_indir(sc, sc->s_malloc.indir); + if (sc->s_malloc.uma != NULL) + uma_zdestroy(sc->s_malloc.uma); break; case MD_PRELOAD: case MD_NULL: