From 2b16cfff9e56ebe5da4f850e26af4ba60dfe54aa Mon Sep 17 00:00:00 2001 From: yupeng Date: Fri, 21 Aug 2020 06:51:10 +0000 Subject: [PATCH] bdev: free g_bdev_examine_allowlist before the app exit Add a bdev_examine_allowlist_free function, which releases the members in g_bdev_examine_allowlist. Invoke it in bdev_mgr_unregister_cb. Signed-off-by: Peng Yu Change-Id: I47faf6959066da6679716b2f2abfab8ac8b8dd79 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/3880 Community-CI: Mellanox Build Bot Community-CI: Broadcom CI Reviewed-by: Changpeng Liu Reviewed-by: Shuhei Matsumoto Tested-by: SPDK CI Jenkins --- lib/bdev/bdev.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/lib/bdev/bdev.c b/lib/bdev/bdev.c index 164ee4e30..ed55c164b 100644 --- a/lib/bdev/bdev.c +++ b/lib/bdev/bdev.c @@ -425,6 +425,18 @@ bdev_examine_allowlist_check(const char *name) return false; } +static inline void +bdev_examine_allowlist_free(void) +{ + struct spdk_bdev_examine_item *item; + while (!TAILQ_EMPTY(&g_bdev_examine_allowlist)) { + item = TAILQ_FIRST(&g_bdev_examine_allowlist); + TAILQ_REMOVE(&g_bdev_examine_allowlist, item, link); + free(item->name); + free(item); + } +} + static inline bool bdev_in_examine_allowlist(struct spdk_bdev *bdev) { @@ -1379,6 +1391,8 @@ bdev_mgr_unregister_cb(void *io_device) spdk_free(g_bdev_mgr.zero_buffer); + bdev_examine_allowlist_free(); + cb_fn(g_fini_cb_arg); g_fini_cb_fn = NULL; g_fini_cb_arg = NULL;