Patch "regulator: raa215300: Fix resource leak in case of error" has been added to the 6.5-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    regulator: raa215300: Fix resource leak in case of error

to the 6.5-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     regulator-raa215300-fix-resource-leak-in-case-of-err.patch
and it can be found in the queue-6.5 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit c6cdf83974f56334e7d863bd439870088ca6f277
Author: Biju Das <biju.das.jz@xxxxxxxxxxxxxx>
Date:   Wed Aug 16 14:55:49 2023 +0100

    regulator: raa215300: Fix resource leak in case of error
    
    [ Upstream commit e21ac64e669e960688e79bf5babeed63132dac8a ]
    
    The clk_register_clkdev() allocates memory by calling vclkdev_alloc() and
    this memory is not freed in the error path. Similarly, resources allocated
    by clk_register_fixed_rate() are not freed in the error path.
    
    Fix these issues by using devm_clk_hw_register_fixed_rate() and
    devm_clk_hw_register_clkdev().
    
    After this, the static variable clk is not needed. Replace it with 
    local variable hw in probe() and drop calling clk_unregister_fixed_rate()
    from raa215300_rtc_unregister_device().
    
    Fixes: 7bce16630837 ("regulator: Add Renesas PMIC RAA215300 driver")
    Cc: stable@xxxxxxxxxx
    Signed-off-by: Biju Das <biju.das.jz@xxxxxxxxxxxxxx>
    Link: https://lore.kernel.org/r/20230816135550.146657-2-biju.das.jz@xxxxxxxxxxxxxx
    Signed-off-by: Mark Brown <broonie@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/regulator/raa215300.c b/drivers/regulator/raa215300.c
index 8e1a4c86b9789..253645696d0bb 100644
--- a/drivers/regulator/raa215300.c
+++ b/drivers/regulator/raa215300.c
@@ -38,8 +38,6 @@
 #define RAA215300_REG_BLOCK_EN_RTC_EN	BIT(6)
 #define RAA215300_RTC_DEFAULT_ADDR	0x6f
 
-static struct clk *clk;
-
 static const struct regmap_config raa215300_regmap_config = {
 	.reg_bits = 8,
 	.val_bits = 8,
@@ -49,10 +47,6 @@ static const struct regmap_config raa215300_regmap_config = {
 static void raa215300_rtc_unregister_device(void *data)
 {
 	i2c_unregister_device(data);
-	if (!clk) {
-		clk_unregister_fixed_rate(clk);
-		clk = NULL;
-	}
 }
 
 static int raa215300_clk_present(struct i2c_client *client, const char *name)
@@ -130,10 +124,16 @@ static int raa215300_i2c_probe(struct i2c_client *client)
 		u32 addr = RAA215300_RTC_DEFAULT_ADDR;
 		struct i2c_board_info info = {};
 		struct i2c_client *rtc_client;
+		struct clk_hw *hw;
 		ssize_t size;
 
-		clk = clk_register_fixed_rate(NULL, clk_name, NULL, 0, 32000);
-		clk_register_clkdev(clk, clk_name, NULL);
+		hw = devm_clk_hw_register_fixed_rate(dev, clk_name, NULL, 0, 32000);
+		if (IS_ERR(hw))
+			return PTR_ERR(hw);
+
+		ret = devm_clk_hw_register_clkdev(dev, hw, clk_name, NULL);
+		if (ret)
+			return dev_err_probe(dev, ret, "Failed to initialize clkdev\n");
 
 		if (np) {
 			int i;



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux