aboutsummaryrefslogtreecommitdiff
path: root/drivers/mtd
diff options
context:
space:
mode:
authorGravatar Miquel Raynal <miquel.raynal@bootlin.com> 2024-01-04 09:14:46 +0100
committerGravatar Miquel Raynal <miquel.raynal@bootlin.com> 2024-02-05 13:39:33 +0100
commit5ab9bbf6c678444dd99afabd44665e7f04047cc5 (patch)
tree443bee5cac029b7b46e4a913a25a6baa5a8a81e1 /drivers/mtd
parentmtd: spinand: gigadevice: Fix the get ecc status issue (diff)
downloadlinux-5ab9bbf6c678444dd99afabd44665e7f04047cc5.tar.gz
linux-5ab9bbf6c678444dd99afabd44665e7f04047cc5.tar.bz2
linux-5ab9bbf6c678444dd99afabd44665e7f04047cc5.zip
mtd: Fix possible refcounting issue when going through partition nodes
Under normal conditions, the loop goes over all child partitions, and 'breaks' when the relevant partition is found. In this case we get a reference to the partition node without ever releasing it. Indeed, right after the mtd_check_of_node() function returns, we call of_node_get() again over this very same node. It is probably safer to keep the counters even in this helper and call of_node_put() before break-ing. Reported-by: kernel test robot <lkp@intel.com> Reported-by: Julia Lawall <julia.lawall@inria.fr> Closes: https://lore.kernel.org/r/202312250546.ISzglvM2-lkp@intel.com/ Cc: Christian Marangi <ansuelsmth@gmail.com> Cc: Rafał Miłecki <rafal@milecki.pl> Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> Link: https://lore.kernel.org/linux-mtd/20240104081446.126540-1-miquel.raynal@bootlin.com
Diffstat (limited to 'drivers/mtd')
-rw-r--r--drivers/mtd/mtdcore.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/mtd/mtdcore.c b/drivers/mtd/mtdcore.c
index e451b28840d5..5887feb347a4 100644
--- a/drivers/mtd/mtdcore.c
+++ b/drivers/mtd/mtdcore.c
@@ -621,6 +621,7 @@ static void mtd_check_of_node(struct mtd_info *mtd)
if (plen == mtd_name_len &&
!strncmp(mtd->name, pname + offset, plen)) {
mtd_set_of_node(mtd, mtd_dn);
+ of_node_put(mtd_dn);
break;
}
}