Skip to content

Commit 35962ea

Browse files
committed
Merge tag 'drm-atmel-hlcdc-fixes/for-4.7-rc2' of github.com:bbrezillon/linux-at91 into drm-fixes
Two trivial bugfixes for the atmel-hlcdc driver. The first one is making use of __drm_atomic_helper_crtc_destroy_state() instead of duplicating its logic in atmel_hlcdc_crtc_reset() and risking memory leaks if other objects are added to the common CRTC state. The second one is fixing a possible NULL pointer dereference. * tag 'drm-atmel-hlcdc-fixes/for-4.7-rc2' of github.com:bbrezillon/linux-at91: drm: atmel-hlcdc: fix a NULL check drm: atmel-hlcdc: fix atmel_hlcdc_crtc_reset() implementation
2 parents 6572c8c + 58a2ab3 commit 35962ea

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -391,12 +391,11 @@ void atmel_hlcdc_crtc_reset(struct drm_crtc *crtc)
391391
{
392392
struct atmel_hlcdc_crtc_state *state;
393393

394-
if (crtc->state && crtc->state->mode_blob)
395-
drm_property_unreference_blob(crtc->state->mode_blob);
396-
397394
if (crtc->state) {
395+
__drm_atomic_helper_crtc_destroy_state(crtc->state);
398396
state = drm_crtc_state_to_atmel_hlcdc_crtc_state(crtc->state);
399397
kfree(state);
398+
crtc->state = NULL;
400399
}
401400

402401
state = kzalloc(sizeof(*state), GFP_KERNEL);
@@ -415,8 +414,9 @@ atmel_hlcdc_crtc_duplicate_state(struct drm_crtc *crtc)
415414
return NULL;
416415

417416
state = kmalloc(sizeof(*state), GFP_KERNEL);
418-
if (state)
419-
__drm_atomic_helper_crtc_duplicate_state(crtc, &state->base);
417+
if (!state)
418+
return NULL;
419+
__drm_atomic_helper_crtc_duplicate_state(crtc, &state->base);
420420

421421
cur = drm_crtc_state_to_atmel_hlcdc_crtc_state(crtc->state);
422422
state->output_mode = cur->output_mode;

0 commit comments

Comments
 (0)