From e5fc44006e07d2a5736e54de7846212438b369da Mon Sep 17 00:00:00 2001 From: tkusumi Date: Fri, 13 Dec 2019 15:49:22 +0000 Subject: [PATCH] dm: Fix memory leak in dm_pdev_rem() Need to free dmp regardless of dm_pdev_rem() return value. taken-from: DragonFlyBSD --- sys/dev/dm/dm_pdev.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/sys/dev/dm/dm_pdev.c b/sys/dev/dm/dm_pdev.c index 8917cd56aa65..d08bde89a544 100644 --- a/sys/dev/dm/dm_pdev.c +++ b/sys/dev/dm/dm_pdev.c @@ -1,4 +1,4 @@ -/* $NetBSD: dm_pdev.c,v 1.19 2019/12/08 12:14:40 mlelstv Exp $ */ +/* $NetBSD: dm_pdev.c,v 1.20 2019/12/13 15:49:22 tkusumi Exp $ */ /* * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -29,7 +29,7 @@ * POSSIBILITY OF SUCH DAMAGE. */ #include -__KERNEL_RCSID(0, "$NetBSD: dm_pdev.c,v 1.19 2019/12/08 12:14:40 mlelstv Exp $"); +__KERNEL_RCSID(0, "$NetBSD: dm_pdev.c,v 1.20 2019/12/13 15:49:22 tkusumi Exp $"); #include #include @@ -174,8 +174,10 @@ dm_pdev_rem(dm_pdev_t *dmp) if (dmp->pdev_vnode != NULL) { int error = vn_close(dmp->pdev_vnode, FREAD | FWRITE, FSCRED); - if (error != 0) + if (error != 0) { + kmem_free(dmp, sizeof(*dmp)); return error; + } } kmem_free(dmp, sizeof(*dmp));