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)