diff --git a/mm/vmscan.c b/mm/vmscan.c index f16e330e109637..c6033260e739fe 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -223,10 +223,13 @@ EXPORT_SYMBOL(register_shrinker); */ void unregister_shrinker(struct shrinker *shrinker) { + if (!shrinker->nr_deferred) + return; down_write(&shrinker_rwsem); list_del(&shrinker->list); up_write(&shrinker_rwsem); kfree(shrinker->nr_deferred); + shrinker->nr_deferred = NULL; } EXPORT_SYMBOL(unregister_shrinker);