]> www.infradead.org Git - users/hch/misc.git/commitdiff
spi: Fix reference count leak in slave_show()
authorMiaoqian Lin <linmq006@gmail.com>
Wed, 19 Mar 2025 03:23:04 +0000 (11:23 +0800)
committerMark Brown <broonie@kernel.org>
Wed, 19 Mar 2025 12:47:50 +0000 (12:47 +0000)
Fix a reference count leak in slave_show() by properly putting the device
reference obtained from device_find_any_child().

Fixes: 6c364062bfed ("spi: core: Add support for registering SPI slave controllers")
Fixes: c21b0837983d ("spi: Use device_find_any_child() instead of custom approach")
Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://patch.msgid.link/20250319032305.70340-1-linmq006@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi.c

index a7a4647717d44e4983f7d6725d17e7321d59506d..ff07c87dbadc3995c04549bc5d64685d58b90a5f 100644 (file)
@@ -2954,9 +2954,13 @@ static ssize_t slave_show(struct device *dev, struct device_attribute *attr,
        struct spi_controller *ctlr = container_of(dev, struct spi_controller,
                                                   dev);
        struct device *child;
+       int ret;
 
        child = device_find_any_child(&ctlr->dev);
-       return sysfs_emit(buf, "%s\n", child ? to_spi_device(child)->modalias : NULL);
+       ret = sysfs_emit(buf, "%s\n", child ? to_spi_device(child)->modalias : NULL);
+       put_device(child);
+
+       return ret;
 }
 
 static ssize_t slave_store(struct device *dev, struct device_attribute *attr,