From: Yu Watanabe Date: Thu, 6 Sep 2018 02:58:29 +0000 (+0900) Subject: backlight: do not unref parent device X-Git-Tag: v240~753 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=e8596ca5c401cfdb3fe07cb1ef741cf9911bbe5c;p=thirdparty%2Fsystemd.git backlight: do not unref parent device Fixes double-free introduced by 9aadd28149ae2d8ce9956495c961d97ba4033b0e. --- diff --git a/src/backlight/backlight.c b/src/backlight/backlight.c index e574a4d56d5..c9d45c22531 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;