]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
backlight: do not unref parent device
authorYu Watanabe <watanabe.yu+github@gmail.com>
Thu, 6 Sep 2018 02:58:29 +0000 (11:58 +0900)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Fri, 7 Sep 2018 18:00:01 +0000 (20:00 +0200)
Fixes double-free introduced by 9aadd28149ae2d8ce9956495c961d97ba4033b0e.

src/backlight/backlight.c

index e574a4d56d597bc8474c8175135f2751764ad587..c9d45c22531dd2ef21623e89c611b1ed9dcd59b8 100644 (file)
@@ -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;