diff options
Diffstat (limited to 'drivers/gpu/drm/drm_crtc.c')
-rw-r--r-- | drivers/gpu/drm/drm_crtc.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c index 0d1faa72e1ff..f259a2563204 100644 --- a/drivers/gpu/drm/drm_crtc.c +++ b/drivers/gpu/drm/drm_crtc.c | |||
@@ -2340,6 +2340,10 @@ int drm_mode_dirtyfb_ioctl(struct drm_device *dev, | |||
2340 | } | 2340 | } |
2341 | 2341 | ||
2342 | if (num_clips && clips_ptr) { | 2342 | if (num_clips && clips_ptr) { |
2343 | if (num_clips < 0 || num_clips > DRM_MODE_FB_DIRTY_MAX_CLIPS) { | ||
2344 | ret = -EINVAL; | ||
2345 | goto out_err1; | ||
2346 | } | ||
2343 | clips = kzalloc(num_clips * sizeof(*clips), GFP_KERNEL); | 2347 | clips = kzalloc(num_clips * sizeof(*clips), GFP_KERNEL); |
2344 | if (!clips) { | 2348 | if (!clips) { |
2345 | ret = -ENOMEM; | 2349 | ret = -ENOMEM; |
@@ -2585,8 +2589,10 @@ struct drm_property *drm_property_create(struct drm_device *dev, int flags, | |||
2585 | property->num_values = num_values; | 2589 | property->num_values = num_values; |
2586 | INIT_LIST_HEAD(&property->enum_blob_list); | 2590 | INIT_LIST_HEAD(&property->enum_blob_list); |
2587 | 2591 | ||
2588 | if (name) | 2592 | if (name) { |
2589 | strncpy(property->name, name, DRM_PROP_NAME_LEN); | 2593 | strncpy(property->name, name, DRM_PROP_NAME_LEN); |
2594 | property->name[DRM_PROP_NAME_LEN-1] = '\0'; | ||
2595 | } | ||
2590 | 2596 | ||
2591 | list_add_tail(&property->head, &dev->mode_config.property_list); | 2597 | list_add_tail(&property->head, &dev->mode_config.property_list); |
2592 | return property; | 2598 | return property; |