#include <drm/drm_gem_cma_helper.h>
 #include <drm/drm_gem_framebuffer_helper.h>
 #include <drm/drm_irq.h>
+#include <drm/drm_managed.h>
 #include <drm/drm_probe_helper.h>
 #include <drm/drm_vblank.h>
 
        err = drm_dev_init(drm, &komeda_kms_driver, mdev->dev);
        if (err)
                goto free_kms;
+       drmm_add_final_kfree(drm, kms);
 
        drm->dev_private = mdev;
 
 
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_drv.h>
 #include <drm/drm_ioctl.h>
+#include <drm/drm_managed.h>
 #include <drm/drm_prime.h>
 #include <drm/drm_probe_helper.h>
 #include <drm/drm_fb_helper.h>
                kfree(priv);
                return ret;
        }
+       drmm_add_final_kfree(&priv->drm, priv);
 
        /* Remove early framebuffers */
        ret = drm_fb_helper_remove_conflicting_framebuffers(NULL,
 
 #include <drm/drm_fb_helper.h>
 #include <drm/drm_file.h>
 #include <drm/drm_ioctl.h>
+#include <drm/drm_managed.h>
 
 #include "vbox_drv.h"
 
        vbox->ddev.pdev = pdev;
        vbox->ddev.dev_private = vbox;
        pci_set_drvdata(pdev, vbox);
+       drmm_add_final_kfree(&vbox->ddev, vbox);
        mutex_init(&vbox->hw_mutex);
 
        ret = pci_enable_device(pdev);