From fe37b584d37096f881d2992d37bf313aa2ace60d Mon Sep 17 00:00:00 2001 From: Kent Overstreet Date: Tue, 19 Dec 2023 19:29:25 -0500 Subject: [PATCH] fix shrinker_free() Signed-off-by: Kent Overstreet --- include/linux/shrinker.h | 7 +------ linux/shrinker.c | 17 ++++++++++------- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/include/linux/shrinker.h b/include/linux/shrinker.h index 2d1adabf..d0a84794 100644 --- a/include/linux/shrinker.h +++ b/include/linux/shrinker.h @@ -25,15 +25,10 @@ struct shrinker { void *private_data; }; -static inline void shrinker_free(struct shrinker *s) -{ - free(s); -} - +void shrinker_free(struct shrinker *); struct shrinker *shrinker_alloc(unsigned int, const char *, ...); int shrinker_register(struct shrinker *); -void shrinker_unregister(struct shrinker *); void run_shrinkers(gfp_t gfp_mask, bool); diff --git a/linux/shrinker.c b/linux/shrinker.c index 88069769..ca34ebc7 100644 --- a/linux/shrinker.c +++ b/linux/shrinker.c @@ -13,6 +13,16 @@ static LIST_HEAD(shrinker_list); static DEFINE_MUTEX(shrinker_lock); +void shrinker_free(struct shrinker *s) +{ + if (s->list.next) { + mutex_lock(&shrinker_lock); + list_del(&s->list); + mutex_unlock(&shrinker_lock); + } + free(s); +} + struct shrinker *shrinker_alloc(unsigned int flags, const char *fmt, ...) { return calloc(sizeof(struct shrinker), 1); @@ -26,13 +36,6 @@ int shrinker_register(struct shrinker *shrinker) return 0; } -void unregister_shrinker(struct shrinker *shrinker) -{ - mutex_lock(&shrinker_lock); - list_del(&shrinker->list); - mutex_unlock(&shrinker_lock); -} - static void run_shrinkers_allocation_failed(gfp_t gfp_mask) { struct shrinker *shrinker;