diff options
Diffstat (limited to 'mm/vmscan.c')
| -rw-r--r-- | mm/vmscan.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/mm/vmscan.c b/mm/vmscan.c index c02c850ea349..47d5ced51f2d 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c | |||
| @@ -297,10 +297,13 @@ EXPORT_SYMBOL(register_shrinker); | |||
| 297 | */ | 297 | */ |
| 298 | void unregister_shrinker(struct shrinker *shrinker) | 298 | void unregister_shrinker(struct shrinker *shrinker) |
| 299 | { | 299 | { |
| 300 | if (!shrinker->nr_deferred) | ||
| 301 | return; | ||
| 300 | down_write(&shrinker_rwsem); | 302 | down_write(&shrinker_rwsem); |
| 301 | list_del(&shrinker->list); | 303 | list_del(&shrinker->list); |
| 302 | up_write(&shrinker_rwsem); | 304 | up_write(&shrinker_rwsem); |
| 303 | kfree(shrinker->nr_deferred); | 305 | kfree(shrinker->nr_deferred); |
| 306 | shrinker->nr_deferred = NULL; | ||
| 304 | } | 307 | } |
| 305 | EXPORT_SYMBOL(unregister_shrinker); | 308 | EXPORT_SYMBOL(unregister_shrinker); |
| 306 | 309 | ||
