nvdimm/btt: Free arena sub-allocations on discover_arenas() error path

Memory allocated by btt_freelist_init(), btt_rtt_init(), and
btt_maplocks_init() is not freed on some discover_arenas() error
paths. This leaks memory when arena discovery fails.

Add the missing kfree() calls to release the allocations before
returning an error.

[ as: commit message and log edits ]

Fixes: 5212e11fde ("nd_btt: atomic sector updates")
Cc: stable@vger.kernel.org
Signed-off-by: Abdun Nihaal <nihaal@cse.iitm.ac.in>
Reviewed-by: Alison Schofield <alison.schofield@intel.com>
Link: https://patch.msgid.link/20260519-nvdimmleaks-v1-1-592300fb7a43@cse.iitm.ac.in
Signed-off-by: Alison Schofield <alison.schofield@intel.com>
This commit is contained in:
Abdun Nihaal 2026-05-19 11:20:12 +05:30 committed by Alison Schofield
parent 8d4b989d9c
commit 13fe4cd9dd

View File

@ -919,6 +919,9 @@ static int discover_arenas(struct btt *btt)
return ret;
out:
kfree(arena->freelist);
kfree(arena->rtt);
kfree(arena->map_locks);
kfree(arena);
free_arenas(btt);
return ret;