Message ID | 20200302222631.3861340-7-daniel.vetter@ffwll.ch (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm_device managed resources, v4 | expand |
Am 02.03.20 um 23:25 schrieb Daniel Vetter: > With this we can drop the final kfree from the release function. > > v2: We need drm_dev_put to unroll the driver creation (once > drm_dev_init and drmm_add_final_kfree suceeded), otherwise > the drmm_ magic doesn't happen. > > v3: Actually squash in the fixup (Laurent). > > Acked-by: Sam Ravnborg <sam@ravnborg.org> > Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> Acked-by: Thomas Zimmermann <tzimmermann@suse.de> > Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > Cc: Dave Airlie <airlied@redhat.com> > Cc: Sean Paul <sean@poorly.run> > Cc: Thomas Zimmermann <tzimmermann@suse.de> > Cc: Emil Velikov <emil.l.velikov@gmail.com> > Cc: Daniel Vetter <daniel.vetter@ffwll.ch> > Cc: "Noralf Trønnes" <noralf@tronnes.org> > Cc: Thomas Gleixner <tglx@linutronix.de> > Cc: Sam Ravnborg <sam@ravnborg.org> > --- > drivers/gpu/drm/udl/udl_drv.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/udl/udl_drv.c b/drivers/gpu/drm/udl/udl_drv.c > index e6c1cd77d4d4..6a5594946096 100644 > --- a/drivers/gpu/drm/udl/udl_drv.c > +++ b/drivers/gpu/drm/udl/udl_drv.c > @@ -10,6 +10,7 @@ > #include <drm/drm_fb_helper.h> > #include <drm/drm_file.h> > #include <drm/drm_gem_shmem_helper.h> > +#include <drm/drm_managed.h> > #include <drm/drm_ioctl.h> > #include <drm/drm_probe_helper.h> > #include <drm/drm_print.h> > @@ -38,7 +39,6 @@ static void udl_driver_release(struct drm_device *dev) > udl_fini(dev); > udl_modeset_cleanup(dev); > drm_dev_fini(dev); > - kfree(dev); > } > > static struct drm_driver driver = { > @@ -77,11 +77,11 @@ static struct udl_device *udl_driver_create(struct usb_interface *interface) > > udl->udev = udev; > udl->drm.dev_private = udl; > + drmm_add_final_kfree(&udl->drm, udl); > > r = udl_init(udl); > if (r) { > - drm_dev_fini(&udl->drm); > - kfree(udl); > + drm_dev_put(&udl->drm); > return ERR_PTR(r); > } > >
diff --git a/drivers/gpu/drm/udl/udl_drv.c b/drivers/gpu/drm/udl/udl_drv.c index e6c1cd77d4d4..6a5594946096 100644 --- a/drivers/gpu/drm/udl/udl_drv.c +++ b/drivers/gpu/drm/udl/udl_drv.c @@ -10,6 +10,7 @@ #include <drm/drm_fb_helper.h> #include <drm/drm_file.h> #include <drm/drm_gem_shmem_helper.h> +#include <drm/drm_managed.h> #include <drm/drm_ioctl.h> #include <drm/drm_probe_helper.h> #include <drm/drm_print.h> @@ -38,7 +39,6 @@ static void udl_driver_release(struct drm_device *dev) udl_fini(dev); udl_modeset_cleanup(dev); drm_dev_fini(dev); - kfree(dev); } static struct drm_driver driver = { @@ -77,11 +77,11 @@ static struct udl_device *udl_driver_create(struct usb_interface *interface) udl->udev = udev; udl->drm.dev_private = udl; + drmm_add_final_kfree(&udl->drm, udl); r = udl_init(udl); if (r) { - drm_dev_fini(&udl->drm); - kfree(udl); + drm_dev_put(&udl->drm); return ERR_PTR(r); }