DragonFlyBSD Kernel Audit
DF-1970 / fix.diff
← back to finding ↓ download raw
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;
 }