Skip to content

Commit 2ae1a34

Browse files
committed
1. Fixed memory corruption in 'metaslab_unload' due to
'metaslab_group_passivate' function not setting the freed pointer to NULL. 2. Fixed '.\zfsinstaller.exe uninstall .\ZFSin\ZFSin.inf' command hang after zpool removal due to 'spa_vdev_remove_thread' not calling 'thread_exit()' during exit.
1 parent 015c007 commit 2ae1a34

File tree

2 files changed

+4
-2
lines changed

2 files changed

+4
-2
lines changed

ZFSin/zfs/module/zfs/metaslab.c

+3-2
Original file line numberDiff line numberDiff line change
@@ -848,9 +848,10 @@ metaslab_group_passivate(metaslab_group_t *mg)
848848
mg->mg_prev = NULL;
849849
mg->mg_next = NULL;
850850
if (mg->mg_kstat != NULL) {
851-
metaslab_group_kstat_t* data = mg->mg_kstat->ks_data;
851+
kmem_free(mg->mg_kstat->ks_data, sizeof(metaslab_group_kstat_t));
852+
mg->mg_kstat->ks_data = NULL;
852853
kstat_delete(mg->mg_kstat);
853-
kmem_free(data, sizeof(metaslab_group_kstat_t));
854+
mg->mg_kstat = NULL;
854855
}
855856
mutex_destroy(&mg->mg_kstat_lock);
856857
}

ZFSin/zfs/module/zfs/vdev_removal.c

+1
Original file line numberDiff line numberDiff line change
@@ -1504,6 +1504,7 @@ spa_vdev_remove_thread(void *arg)
15041504
ASSERT0(range_tree_space(svr->svr_allocd_segs));
15051505
vdev_remove_complete(spa);
15061506
}
1507+
thread_exit();
15071508
}
15081509

15091510
void

0 commit comments

Comments
 (0)