diff options
Diffstat (limited to 'drivers/gpu/drm/drm_atomic.c')
-rw-r--r-- | drivers/gpu/drm/drm_atomic.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c index c32fb3c1d6f0..1d6ab371cd52 100644 --- a/drivers/gpu/drm/drm_atomic.c +++ b/drivers/gpu/drm/drm_atomic.c | |||
@@ -416,18 +416,21 @@ drm_atomic_replace_property_blob_from_id(struct drm_crtc *crtc, | |||
416 | ssize_t expected_size, | 416 | ssize_t expected_size, |
417 | bool *replaced) | 417 | bool *replaced) |
418 | { | 418 | { |
419 | struct drm_device *dev = crtc->dev; | ||
420 | struct drm_property_blob *new_blob = NULL; | 419 | struct drm_property_blob *new_blob = NULL; |
421 | 420 | ||
422 | if (blob_id != 0) { | 421 | if (blob_id != 0) { |
423 | new_blob = drm_property_lookup_blob(dev, blob_id); | 422 | new_blob = drm_property_lookup_blob(crtc->dev, blob_id); |
424 | if (new_blob == NULL) | 423 | if (new_blob == NULL) |
425 | return -EINVAL; | 424 | return -EINVAL; |
426 | if (expected_size > 0 && expected_size != new_blob->length) | 425 | |
426 | if (expected_size > 0 && expected_size != new_blob->length) { | ||
427 | drm_property_unreference_blob(new_blob); | ||
427 | return -EINVAL; | 428 | return -EINVAL; |
429 | } | ||
428 | } | 430 | } |
429 | 431 | ||
430 | drm_atomic_replace_property_blob(blob, new_blob, replaced); | 432 | drm_atomic_replace_property_blob(blob, new_blob, replaced); |
433 | drm_property_unreference_blob(new_blob); | ||
431 | 434 | ||
432 | return 0; | 435 | return 0; |
433 | } | 436 | } |