| From 67616c61ffe4d66a4d2c91b83002f5963a500c0c Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Tue, 28 Jan 2020 14:39:26 +1000 |
| Subject: drm/nouveau/disp/nv50-: prevent oops when no channel method map |
| provided |
| |
| From: Ben Skeggs <bskeggs@redhat.com> |
| |
| [ Upstream commit 0e6176c6d286316e9431b4f695940cfac4ffe6c2 ] |
| |
| 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> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/gpu/drm/nouveau/nvkm/engine/disp/channv50.c | 2 ++ |
| 1 file changed, 2 insertions(+) |
| |
| diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/channv50.c b/drivers/gpu/drm/nouveau/nvkm/engine/disp/channv50.c |
| index bcf32d92ee5a9..50e3539f33d22 100644 |
| --- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/channv50.c |
| +++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/channv50.c |
| @@ -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; |
| -- |
| 2.20.1 |
| |