Fix bogus kmem leak warning

Commit 5c7a036 correctly relocated the creation of a taskq
and the registraction of the kmem_cache_shrinker after the
initialization of the kmem tracking code.  However, the
cleanup of these structures was not done before the leak
checks in spl_kmem_fini().  This resulted in an incorrect
'kmem leaked' warning even though there was no actual leak.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes zfsonlinux/zfs#1569
This commit is contained in:
Brian Behlendorf 2013-07-10 15:04:07 -07:00
parent b1424adda5
commit ab4e74cc38

View File

@ -2439,6 +2439,11 @@ spl_kmem_init(void)
void void
spl_kmem_fini(void) spl_kmem_fini(void)
{ {
SENTRY;
spl_unregister_shrinker(&spl_kmem_cache_shrinker);
taskq_destroy(spl_kmem_cache_taskq);
#ifdef DEBUG_KMEM #ifdef DEBUG_KMEM
/* Display all unreclaimed memory addresses, including the /* Display all unreclaimed memory addresses, including the
* allocation size and the first few bytes of what's located * allocation size and the first few bytes of what's located
@ -2458,10 +2463,6 @@ spl_kmem_fini(void)
spl_kmem_fini_tracking(&kmem_list, &kmem_lock); spl_kmem_fini_tracking(&kmem_list, &kmem_lock);
spl_kmem_fini_tracking(&vmem_list, &vmem_lock); spl_kmem_fini_tracking(&vmem_list, &vmem_lock);
#endif /* DEBUG_KMEM */ #endif /* DEBUG_KMEM */
SENTRY;
spl_unregister_shrinker(&spl_kmem_cache_shrinker);
taskq_destroy(spl_kmem_cache_taskq);
SEXIT; SEXIT;
} }