⬢ DragonFlyBSD Kernel Audit
DF-4195 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/dev/drm/drm_sysfs.c b/sys/dev/drm/drm_sysfs.c
--- a/sys/dev/drm/drm_sysfs.c
+++ b/sys/dev/drm/drm_sysfs.c
@@ -37,9 +37,16 @@
 
 	/* Linux uses device_create_with_groups() here */
 	connector->kdev = kzalloc(sizeof(struct device), GFP_KERNEL);
+	if (!connector->kdev)
+		return -ENOMEM;
 	connector->kdev->kobj.name = kasprintf(GFP_KERNEL, "card%d-%s",
 					       dev->primary->index,
 					       connector->name);
+	if (!connector->kdev->kobj.name) {
+		kfree(connector->kdev);
+		connector->kdev = NULL;
+		return -ENOMEM;
+	}
 	DRM_DEBUG("adding \"%s\" to sysfs\n", connector->name);
 
 	return 0;
@@ -49,8 +56,10 @@
 {
 	DRM_DEBUG("removing \"%s\" from sysfs\n", connector->name);
 
-	if (connector->kdev)
+	if (connector->kdev) {
 		kfree(connector->kdev);
+		connector->kdev = NULL;
+	}
 }
 
 void drm_sysfs_hotplug_event(struct drm_device *dev)