From 8e098e419089d8e812da4f3cc95278d3c986d793 Mon Sep 17 00:00:00 2001 From: Daniel Verkamp Date: Thu, 19 Apr 2018 13:04:00 -0700 Subject: [PATCH] nvme: verify remove_cb is non-NULL before calling This fixes the VFIO hot-remove path, which called remove_cb without checking to see if it had been specified by the user. The normal uevent removal path already checked for remove_cb. Change-Id: I0ad8d2c90a77b16800a8b505cb69ea05b0706d70 Signed-off-by: Daniel Verkamp Reviewed-on: https://review.gerrithub.io/408392 Tested-by: SPDK Automated Test System Reviewed-by: Jim Harris Reviewed-by: Ben Walker --- lib/nvme/nvme_pcie.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/nvme/nvme_pcie.c b/lib/nvme/nvme_pcie.c index c85883949..00e4c1908 100644 --- a/lib/nvme/nvme_pcie.c +++ b/lib/nvme/nvme_pcie.c @@ -299,9 +299,11 @@ _nvme_pcie_hotplug_monitor(void *cb_ctx, spdk_nvme_probe_cb probe_cb, csts = spdk_nvme_ctrlr_get_regs_csts(ctrlr); if (csts.raw == 0xffffffffU) { nvme_ctrlr_fail(ctrlr, true); - nvme_robust_mutex_unlock(&g_spdk_nvme_driver->lock); - remove_cb(cb_ctx, ctrlr); - nvme_robust_mutex_lock(&g_spdk_nvme_driver->lock); + if (remove_cb) { + nvme_robust_mutex_unlock(&g_spdk_nvme_driver->lock); + remove_cb(cb_ctx, ctrlr); + nvme_robust_mutex_lock(&g_spdk_nvme_driver->lock); + } } } return 0;