[Drbd-dev] [PATCH 3/3] lru_cache: Improve exception handling in lc_create()
Markus Elfring
Markus.Elfring at web.de
Wed Mar 29 15:44:42 CEST 2023
Date: Wed, 29 Mar 2023 15:20:39 +0200
The label “out_fail” was used to jump to a kfree() call despite of
the detail in the implementation of the function “lc_create”
that it was determined already that a corresponding variable contained
a null pointer because of a failed memory allocation.
Thus use more appropriate labels instead.
This issue was detected by using the Coccinelle software.
Signed-off-by: Markus Elfring <elfring at users.sourceforge.net>
---
lib/lru_cache.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/lib/lru_cache.c b/lib/lru_cache.c
index 31820f03b146..fdc8bd6fc888 100644
--- a/lib/lru_cache.c
+++ b/lib/lru_cache.c
@@ -100,11 +100,11 @@ struct lru_cache *lc_create(const char *name, struct kmem_cache *cache,
element = kcalloc(e_count, sizeof(*element), GFP_KERNEL);
if (!element)
- goto out_fail;
+ goto free_slot;
lc = kzalloc(sizeof(*lc), GFP_KERNEL);
if (!lc)
- goto out_fail;
+ goto free_element;
INIT_LIST_HEAD(&lc->in_use);
INIT_LIST_HEAD(&lc->lru);
@@ -142,8 +142,9 @@ struct lru_cache *lc_create(const char *name, struct kmem_cache *cache,
kmem_cache_free(cache, p - e_off);
}
kfree(lc);
-out_fail:
+free_element:
kfree(element);
+free_slot:
kfree(slot);
return NULL;
}
--
2.40.0
More information about the drbd-dev
mailing list