summaryrefslogtreecommitdiff
path: root/nvkm/engine/disp
diff options
context:
space:
mode:
authorMaarten Lankhorst <maarten.lankhorst@canonical.com>2014-06-17 15:01:48 +0200
committerBen Skeggs <bskeggs@redhat.com>2014-06-18 15:48:53 +1000
commitb78f71a12090df6119173b7bf6fd9d41b84b4d40 (patch)
tree26f90429b883d6e71f83cbfaa14bb5445d9b301b /nvkm/engine/disp
parent1d6cd9948102b59fb468f8feb67cee74a84714fe (diff)
downloadnouveau-b78f71a12090df6119173b7bf6fd9d41b84b4d40.tar.gz
disp: fix oops in destructor with headless cards
If init doesn't run then disp->outp might not be initialized, resulting in an oops. Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'nvkm/engine/disp')
-rw-r--r--nvkm/engine/disp/base.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/nvkm/engine/disp/base.c b/nvkm/engine/disp/base.c
index c41f656ab..9c38c5e40 100644
--- a/nvkm/engine/disp/base.c
+++ b/nvkm/engine/disp/base.c
@@ -99,8 +99,10 @@ _nouveau_disp_dtor(struct nouveau_object *object)
nouveau_event_destroy(&disp->vblank);
- list_for_each_entry_safe(outp, outt, &disp->outp, head) {
- nouveau_object_ref(NULL, (struct nouveau_object **)&outp);
+ if (disp->outp.next) {
+ list_for_each_entry_safe(outp, outt, &disp->outp, head) {
+ nouveau_object_ref(NULL, (struct nouveau_object **)&outp);
+ }
}
nouveau_engine_destroy(&disp->base);