]> git.ipfire.org Git - thirdparty/plymouth.git/commitdiff
ply-device-manager: Don't deactivate renderers from ply_device_manager_free ()
authorHans de Goede <hdegoede@redhat.com>
Tue, 30 Mar 2021 18:07:53 +0000 (20:07 +0200)
committerHans de Goede <hdegoede@redhat.com>
Wed, 31 Mar 2021 14:35:27 +0000 (16:35 +0200)
Don't deactivate renderers from ply_device_manager_free (),
ply_device_manager_free () is only ever called with the renderers still
active on a "plymouth quit --retain-splash".

Since the splash is being retained in this case the renderers should not be
deactivated. Normally this does not matter because plymouthd exits almost
immediately afterwards and the kernels will close the renderers fds on exit.

But with the upcoming plymouthd-drm-escrow binary which keeps the renderers
fds open, not deactivate renderers; and thus not dropping DRM master rights
does make a difference.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
src/libply-splash-core/ply-device-manager.c

index db843fc7339f779ea2546138e5703757cb38168b..aed7bac2f5557c224fa9ad2dbb34a97cf967da50 100644 (file)
@@ -189,11 +189,16 @@ free_devices_from_device_path (ply_device_manager_t *manager,
         ply_hashtable_remove (manager->renderers, (void *) device_path);
         free (key);
 
-        if (manager->renderers_activated)
-                ply_renderer_deactivate (renderer);
+        /*
+         * Close is false when called from ply_device_manager_free (), in this
+         * case we don't deactivate / close for retain-splash purposes.
+         */
+        if (close) {
+                if (manager->renderers_activated)
+                        ply_renderer_deactivate (renderer);
 
-        if (close)
                 ply_renderer_close (renderer);
+        }
 
         ply_renderer_free (renderer);
 }