diff --git a/sys/dev/drm/radeon/radeon_fb.c b/sys/dev/drm/radeon/radeon_fb.c --- a/sys/dev/drm/radeon/radeon_fb.c +++ b/sys/dev/drm/radeon/radeon_fb.c @@ -324,12 +324,12 @@ if (rbo) { } - if (fb && ret) { - drm_gem_object_put_unlocked(gobj); - drm_framebuffer_unregister_private(fb); - drm_framebuffer_cleanup(fb); - kfree(fb); - } + if (fb && ret) { + drm_gem_object_put_unlocked(gobj); + drm_framebuffer_unregister_private(fb); + drm_framebuffer_cleanup(fb); + /* fb is embedded in rfbdev (rfbdev->fb), do not kfree it. */ + } return ret; }