|
@@ -297,10 +297,13 @@ EXPORT_SYMBOL(register_shrinker);
|
|
*/
|
|
*/
|
|
void unregister_shrinker(struct shrinker *shrinker)
|
|
void unregister_shrinker(struct shrinker *shrinker)
|
|
{
|
|
{
|
|
|
|
+ if (!shrinker->nr_deferred)
|
|
|
|
+ return;
|
|
down_write(&shrinker_rwsem);
|
|
down_write(&shrinker_rwsem);
|
|
list_del(&shrinker->list);
|
|
list_del(&shrinker->list);
|
|
up_write(&shrinker_rwsem);
|
|
up_write(&shrinker_rwsem);
|
|
kfree(shrinker->nr_deferred);
|
|
kfree(shrinker->nr_deferred);
|
|
|
|
+ shrinker->nr_deferred = NULL;
|
|
}
|
|
}
|
|
EXPORT_SYMBOL(unregister_shrinker);
|
|
EXPORT_SYMBOL(unregister_shrinker);
|
|
|
|
|