diff mbox

PM / sleep: fix device reference leak in test_suspend

Message ID 1477997396-29476-1-git-send-email-johan@kernel.org (mailing list archive)
State Accepted, archived
Delegated to: Rafael Wysocki
Headers show

Commit Message

Johan Hovold Nov. 1, 2016, 10:49 a.m. UTC
Make sure to drop the reference taken by class_find_device() after
opening the rtc device.

Fixes: 77437fd4e61f ("pm: boot time suspend selftest")
Signed-off-by: Johan Hovold <johan@kernel.org>
---
 kernel/power/suspend_test.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Comments

Pavel Machek Nov. 2, 2016, 8:52 a.m. UTC | #1
On Tue 2016-11-01 11:49:56, Johan Hovold wrote:
> Make sure to drop the reference taken by class_find_device() after
> opening the rtc device.
> 
> Fixes: 77437fd4e61f ("pm: boot time suspend selftest")
> Signed-off-by: Johan Hovold <johan@kernel.org>

Acked-by: Pavel Machek <pavel@ucw.cz>

> ---
>  kernel/power/suspend_test.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/kernel/power/suspend_test.c b/kernel/power/suspend_test.c
> index 084452e34a12..bdff5ed57f10 100644
> --- a/kernel/power/suspend_test.c
> +++ b/kernel/power/suspend_test.c
> @@ -203,8 +203,10 @@ static int __init test_suspend(void)
>  
>  	/* RTCs have initialized by now too ... can we use one? */
>  	dev = class_find_device(rtc_class, NULL, NULL, has_wakealarm);
> -	if (dev)
> +	if (dev) {
>  		rtc = rtc_class_open(dev_name(dev));
> +		put_device(dev);
> +	}
>  	if (!rtc) {
>  		printk(warn_no_rtc);
>  		return 0;
diff mbox

Patch

diff --git a/kernel/power/suspend_test.c b/kernel/power/suspend_test.c
index 084452e34a12..bdff5ed57f10 100644
--- a/kernel/power/suspend_test.c
+++ b/kernel/power/suspend_test.c
@@ -203,8 +203,10 @@  static int __init test_suspend(void)
 
 	/* RTCs have initialized by now too ... can we use one? */
 	dev = class_find_device(rtc_class, NULL, NULL, has_wakealarm);
-	if (dev)
+	if (dev) {
 		rtc = rtc_class_open(dev_name(dev));
+		put_device(dev);
+	}
 	if (!rtc) {
 		printk(warn_no_rtc);
 		return 0;