Message ID | 20200227181522.2711142-10-daniel.vetter@ffwll.ch (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm managed resources, v3 | expand |
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@intel.com> > Cc: Dave Airlie <airlied@redhat.com> > Cc: Gerd Hoffmann <kraxel@redhat.com> > Cc: Daniel Vetter <daniel.vetter@ffwll.ch> > Cc: "Noralf Trønnes" <noralf@tronnes.org> > Cc: Linus Walleij <linus.walleij@linaro.org> > Cc: Sam Ravnborg <sam@ravnborg.org> > Cc: Thomas Zimmermann <tzimmermann@suse.de> > Cc: virtualization@lists.linux-foundation.org Acked-by: Sam Ravnborg <sam@ravnborg.org> > --- > 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
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;
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@intel.com> Cc: Dave Airlie <airlied@redhat.com> Cc: Gerd Hoffmann <kraxel@redhat.com> Cc: Daniel Vetter <daniel.vetter@ffwll.ch> Cc: "Noralf Trønnes" <noralf@tronnes.org> Cc: Linus Walleij <linus.walleij@linaro.org> Cc: Sam Ravnborg <sam@ravnborg.org> Cc: Thomas Zimmermann <tzimmermann@suse.de> Cc: virtualization@lists.linux-foundation.org --- drivers/gpu/drm/cirrus/cirrus.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-)