drm/nouveau/disp/nv50-: prevent oops when no channel method map provided
authorBen Skeggs <bskeggs@redhat.com>
Tue, 28 Jan 2020 04:39:26 +0000 (14:39 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Wed, 29 Jan 2020 05:49:56 +0000 (15:49 +1000)
The implementations for most channel types contains a map of methods to
priv registers in order to provide debugging info when a disp exception
has been raised.

This info is missing from the implementation of PIO channels as they're
rather simplistic already, however, if an exception is raised by one of
them, we'd end up triggering a NULL-pointer deref.  Not ideal...

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=206299
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
drivers/gpu/drm/nouveau/nvkm/engine/disp/channv50.c

index bcf32d92ee5a9ec28de558715566e5eccc89432a..50e3539f33d22daa631e90a0bbcc8236f9899ff5 100644 (file)
@@ -74,6 +74,8 @@ nv50_disp_chan_mthd(struct nv50_disp_chan *chan, int debug)
 
        if (debug > subdev->debug)
                return;
+       if (!mthd)
+               return;
 
        for (i = 0; (list = mthd->data[i].mthd) != NULL; i++) {
                u32 base = chan->head * mthd->addr;