[PATCH] fix: nvmem: sl28vpd_add_cells: fix missing of_node_put for info.np on nvmem_add_one_cell failure

From: WenTao Liang

Date: Fri Jun 26 2026 - 11:46:27 EST


In sl28vpd_add_cells(), of_get_child_by_name() acquires a reference for
info.np inside the loop. On success, nvmem_add_one_cell() consumes the
reference. However, when nvmem_add_one_cell() fails, the function
releases layout_np via of_node_put() but does not call
of_node_put(info.np), leaking the device_node reference.

Add of_node_put(info.np) before returning error to fix the leak.

Cc: stable@xxxxxxxxxxxxxxx
Fixes: d9fae023fe86 ("nvmem: layouts: sl28vpd: Add new layout driver")
Signed-off-by: WenTao Liang <vulab@xxxxxxxxxxx>
---
drivers/nvmem/layouts/sl28vpd.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/drivers/nvmem/layouts/sl28vpd.c b/drivers/nvmem/layouts/sl28vpd.c
index e93b020b0836..79de1e6947d0 100644
--- a/drivers/nvmem/layouts/sl28vpd.c
+++ b/drivers/nvmem/layouts/sl28vpd.c
@@ -126,6 +126,7 @@ static int sl28vpd_add_cells(struct nvmem_layout *layout)

ret = nvmem_add_one_cell(nvmem, &info);
if (ret) {
+ of_node_put(info.np);
of_node_put(layout_np);
return ret;
}
--
2.39.5 (Apple Git-154)