On Thu, Feb 27, 2020 at 07:14:40PM +0100, Daniel Vetter wrote: > With this we can drop the final kfree from the release function. > > I also noticed that cirrus forgot to call drm_dev_fini(). > > v2: Don't call kfree(cirrus) after we've handed overship of that to > drm_device and the drmm_ stuff. > > Signed-off-by: Daniel Vetter <daniel.vetter@xxxxxxxxx> > Cc: Dave Airlie <airlied@xxxxxxxxxx> > Cc: Gerd Hoffmann <kraxel@xxxxxxxxxx> > Cc: Daniel Vetter <daniel.vetter@xxxxxxxx> > Cc: "Noralf Trønnes" <noralf@xxxxxxxxxxx> > Cc: Linus Walleij <linus.walleij@xxxxxxxxxx> > Cc: Sam Ravnborg <sam@xxxxxxxxxxxx> > Cc: Thomas Zimmermann <tzimmermann@xxxxxxx> > Cc: virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx Acked-by: Sam Ravnborg <sam@xxxxxxxxxxxx> > --- > drivers/gpu/drm/cirrus/cirrus.c | 14 +++++++------- > 1 file changed, 7 insertions(+), 7 deletions(-) > > diff --git a/drivers/gpu/drm/cirrus/cirrus.c b/drivers/gpu/drm/cirrus/cirrus.c > index d2ff63ce8eaf..2232556ce34c 100644 > --- a/drivers/gpu/drm/cirrus/cirrus.c > +++ b/drivers/gpu/drm/cirrus/cirrus.c > @@ -35,6 +35,7 @@ > #include <drm/drm_gem_shmem_helper.h> > #include <drm/drm_gem_framebuffer_helper.h> > #include <drm/drm_ioctl.h> > +#include <drm/drm_managed.h> > #include <drm/drm_modeset_helper_vtables.h> > #include <drm/drm_probe_helper.h> > #include <drm/drm_simple_kms_helper.h> > @@ -527,10 +528,8 @@ static void cirrus_mode_config_init(struct cirrus_device *cirrus) > > static void cirrus_release(struct drm_device *dev) > { > - struct cirrus_device *cirrus = dev->dev_private; > - > drm_mode_config_cleanup(dev); > - kfree(cirrus); > + drm_dev_fini(dev); > } > > DEFINE_DRM_GEM_FOPS(cirrus_fops); > @@ -575,9 +574,12 @@ static int cirrus_pci_probe(struct pci_dev *pdev, > > dev = &cirrus->dev; > ret = drm_dev_init(dev, &cirrus_driver, &pdev->dev); > - if (ret) > - goto err_free_cirrus; > + if (ret) { > + kfree(cirrus); > + goto err_pci_release; > + } > dev->dev_private = cirrus; > + drmm_add_final_kfree(dev, cirrus); > > ret = -ENOMEM; > cirrus->vram = ioremap(pci_resource_start(pdev, 0), > @@ -618,8 +620,6 @@ static int cirrus_pci_probe(struct pci_dev *pdev, > iounmap(cirrus->vram); > err_dev_put: > drm_dev_put(dev); > -err_free_cirrus: > - kfree(cirrus); > err_pci_release: > pci_release_regions(pdev); > return ret; > -- > 2.24.1 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx