From: Markus Elfring <elfring@xxxxxxxxxxxxxxxxxxxxx> Date: Wed, 5 Oct 2016 08:54:40 +0200 The kfree() function was called in up to two cases by the alloc_thread_groups() function during error handling even if the passed variable contained a null pointer. * Return directly after a call of the kcalloc() function failed at the beginning. * Simplify a condition check for memory allocation failures. Signed-off-by: Markus Elfring <elfring@xxxxxxxxxxxxxxxxxxxxx> --- drivers/md/raid5.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c index b624ba6..d864871 100644 --- a/drivers/md/raid5.c +++ b/drivers/md/raid5.c @@ -6265,10 +6265,12 @@ static int alloc_thread_groups(struct r5conf *conf, int cnt, } *group_cnt = num_possible_nodes(); workers = kcalloc(cnt * *group_cnt, sizeof(*workers), GFP_NOIO); + if (!workers) + return -ENOMEM; + *worker_groups = kcalloc(*group_cnt, sizeof(**worker_groups), GFP_NOIO); - if (!*worker_groups || !workers) { + if (!*worker_groups) { kfree(workers); - kfree(*worker_groups); return -ENOMEM; } -- 2.10.1 -- To unsubscribe from this list: send the line "unsubscribe kernel-janitors" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html