Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/i915: Correctly refcount connectors in hw state readou

This was forgotten when adding the the refcounting to
drm_connector_state.

v2: Don't forget to unreference existing connectors. This isn't
relevant on driver load, but this code also runs on resume, and there
we already have an atomic state. Spotted by Chris Wilson.

Cc: Gabriel Feceoru <gabriel.feceoru@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Marius Vlad <marius.c.vlad@intel.com>
Cc: Dave Airlie <airlied@redhat.com>
Fixes: d2307dea14a4 ("drm/atomic: use connector references (v3)")
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: http://patchwork.freedesktop.org/patch/msgid/1462541943-19620-1-git-send-email-daniel.vetter@ffwll.ch

+5
+5
drivers/gpu/drm/i915/intel_display.c
··· 12032 12032 struct intel_connector *connector; 12033 12033 12034 12034 for_each_intel_connector(dev, connector) { 12035 + if (connector->base.state->crtc) 12036 + drm_connector_unreference(&connector->base); 12037 + 12035 12038 if (connector->base.encoder) { 12036 12039 connector->base.state->best_encoder = 12037 12040 connector->base.encoder; 12038 12041 connector->base.state->crtc = 12039 12042 connector->base.encoder->crtc; 12043 + 12044 + drm_connector_reference(&connector->base); 12040 12045 } else { 12041 12046 connector->base.state->best_encoder = NULL; 12042 12047 connector->base.state->crtc = NULL;