From 11774a35a8e38270c9b41f15b19d49a9809571ac Mon Sep 17 00:00:00 2001 From: Shuhei Matsumoto Date: Tue, 12 Dec 2017 09:17:32 +0900 Subject: [PATCH] iscsi: Stale pointer when deleting PG and then IG This bug is detected by test/iscsi_tgt/rpc_config Due to the PG-IG map tree, IG-map is added to PG-map. When PG was deleted first, PG-map was not deleted but PG was deleted because PG-map has IG-maps. PG-IG map tree was designed such that when PG was deleted first, delete all IG-maps belonging to the PG-map, the PG-map, and then PG. By this change stale pointer which will cause memory leak is removed. Change-Id: I15c2ef48bad34608e53d0b44459c90a0cffda24d Signed-off-by: Shuhei Matsumoto Reviewed-on: https://review.gerrithub.io/391321 Tested-by: SPDK Automated Test System Reviewed-by: Daniel Verkamp Reviewed-by: Jim Harris --- lib/iscsi/tgt_node.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/iscsi/tgt_node.c b/lib/iscsi/tgt_node.c index ee6d19780..1861ee8f2 100644 --- a/lib/iscsi/tgt_node.c +++ b/lib/iscsi/tgt_node.c @@ -601,9 +601,11 @@ spdk_iscsi_tgt_node_delete_pg_map(struct spdk_iscsi_tgt_node *target, } if (pg_map->num_ig_maps > 0) { - return -ENOTEMPTY; + SPDK_DEBUGLOG(SPDK_LOG_ISCSI, "delete %d ig_maps forcefully\n", + pg_map->num_ig_maps); } + spdk_iscsi_pg_map_delete_all_ig_maps(pg_map); _spdk_iscsi_tgt_node_delete_pg_map(target, pg_map); return 0; }