diff --git a/lib/sock/sock.c b/lib/sock/sock.c index 9f96be111..0e22a8695 100644 --- a/lib/sock/sock.c +++ b/lib/sock/sock.c @@ -145,9 +145,10 @@ spdk_sock_map_lookup(struct spdk_sock_map *map, int placement_id, pthread_mutex_lock(&map->mtx); STAILQ_FOREACH(entry, &map->entries, link) { if (placement_id == entry->placement_id) { - assert(entry->group != NULL); *group = entry->group; - rc = 0; + if (*group != NULL) { + rc = 0; + } break; } } diff --git a/test/unit/lib/sock/sock.c/sock_ut.c b/test/unit/lib/sock/sock.c/sock_ut.c index 40bcaf117..0fa7c91ab 100644 --- a/test/unit/lib/sock/sock.c/sock_ut.c +++ b/test/unit/lib/sock/sock.c/sock_ut.c @@ -1019,6 +1019,10 @@ ut_sock_map(void) /* Release entry second and final time. */ spdk_sock_map_release(&map, 1); + test_group = NULL; + rc = spdk_sock_map_lookup(&map, 1, &test_group); + CU_ASSERT(rc == -EINVAL); + CU_ASSERT(test_group == NULL); spdk_sock_map_cleanup(&map); @@ -1062,6 +1066,29 @@ ut_sock_map(void) spdk_sock_map_cleanup(&map); + /* Test 6 + * Insert single entry without a sock_group */ + rc = spdk_sock_map_insert(&map, 1, NULL); + CU_ASSERT(rc == 0); + + test_group = NULL; + rc = spdk_sock_map_lookup(&map, 1, &test_group); + CU_ASSERT(rc == -EINVAL); + CU_ASSERT(test_group == NULL); + + test_id = spdk_sock_map_find_free(&map); + CU_ASSERT(test_id == 1); + + rc = spdk_sock_map_insert(&map, test_id, group_1); + CU_ASSERT(rc == 0); + + test_group = NULL; + rc = spdk_sock_map_lookup(&map, test_id, &test_group); + CU_ASSERT(rc == 0); + CU_ASSERT(test_group == group_1); + + spdk_sock_map_cleanup(&map); + spdk_ut_sock_group_impl_close(group_2); spdk_ut_sock_group_impl_close(group_1); }