Skip to contentSkip to conversation

rtc: cpcap: kfreeing devm allocated memory

PATCH Applied Dan Carpenter 3 participants 3 messages Mar 14, 2017 – Mar 16, 2017

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 rtc: cpcap: kfreeing devm allocated memory

We shouldn't kfree(rtc) because is devm_ managed memory. It leads to a double free.

Fixes dd3bf50b35e3 ("rtc: cpcap: new rtc driver")
drivers/rtc/rtc-cpcap.c +1 -3
index 7c6a3c3167bd..5d163be98e9f 100644
@@ -266,10 +266,8 @@ static int cpcap_rtc_probe(struct platform_device *pdev)
 	rtc->rtc_dev = devm_rtc_device_register(dev, "cpcap_rtc",
 						&cpcap_rtc_ops, THIS_MODULE);
 
-	if (IS_ERR(rtc->rtc_dev)) {
-		kfree(rtc);
+	if (IS_ERR(rtc->rtc_dev))
 		return PTR_ERR(rtc->rtc_dev);
-	}
 
 	err = cpcap_get_vendor(dev, rtc->regmap, &rtc->vendor);
 	if (err)
Acked-by on v1 1/1
#1 lore raw

Hi,

Quoted 12 lines · Dan Carpenter

We shouldn't kfree(rtc) because is devm_ managed memory. It leads to a double free.

Fixes dd3bf50b35e3 ("rtc: cpcap: new rtc driver")
drivers/rtc/rtc-cpcap.c +0 -0
index 7c6a3c3167bd..5d163be98e9f 100644
@@ -266,10 +266,8 @@ static int cpcap_rtc_probe(struct platform_device *pdev)
 	rtc->rtc_dev = devm_rtc_device_register(dev, "cpcap_rtc",

drivers/rtc/rtc-cpcap.c static int cpcap_rtc_probe(struct platform_device *pdev) · line 273

Quoted 10 lines
drivers/rtc/rtc-cpcap.c +1 -3
 						&cpcap_rtc_ops, THIS_MODULE);
 
-	if (IS_ERR(rtc->rtc_dev)) {
-		kfree(rtc);
+	if (IS_ERR(rtc->rtc_dev))
 		return PTR_ERR(rtc->rtc_dev);
-	}
 
 	err = cpcap_get_vendor(dev, rtc->regmap, &rtc->vendor);
 	if (err)

-- Sebastian

#2 lore raw
In reply to Dan Carpenter
Quoted 6 lines · Dan Carpenter

We shouldn't kfree(rtc) because is devm_ managed memory. It leads to a double free.

Fixes dd3bf50b35e3 ("rtc: cpcap: new rtc driver")

Applied, thanks.

Signature · 3 lines
Alexandre Belloni, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com