From e8596ca5c401cfdb3fe07cb1ef741cf9911bbe5c Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Thu, 6 Sep 2018 11:58:29 +0900 Subject: [PATCH] backlight: do not unref parent device Fixes double-free introduced by 9aadd28149ae2d8ce9956495c961d97ba4033b0e. --- src/backlight/backlight.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/backlight/backlight.c b/src/backlight/backlight.c index e574a4d56d..c9d45c2253 100644 --- a/src/backlight/backlight.c +++ b/src/backlight/backlight.c @@ -61,12 +61,12 @@ static int find_pci_or_platform_parent(sd_device *device, sd_device **ret) { /* Graphics card */ if (class == 0x30000) { - *ret = TAKE_PTR(parent); + *ret = parent; return 0; } } else if (streq(subsystem, "platform")) { - *ret = TAKE_PTR(parent); + *ret = parent; return 0; } @@ -104,9 +104,8 @@ static int same_device(sd_device *a, sd_device *b) { static int validate_device(sd_device *device) { _cleanup_(sd_device_enumerator_unrefp) sd_device_enumerator *enumerate = NULL; - _cleanup_(sd_device_unrefp) sd_device *parent = NULL; const char *v, *subsystem; - sd_device *other; + sd_device *parent, *other; int r; assert(device); @@ -162,8 +161,8 @@ static int validate_device(sd_device *device) { return r; FOREACH_DEVICE_AND_SUBSYSTEM(enumerate, other) { - _cleanup_(sd_device_unrefp) sd_device *other_parent = NULL; const char *other_subsystem; + sd_device *other_parent; if (same_device(device, other) > 0) continue;