]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/nouveau/nvif: fix null ptr deref on pre-fermi boards
authorBen Skeggs <bskeggs@nvidia.com>
Mon, 14 Jul 2025 02:59:23 +0000 (12:59 +1000)
committerDanilo Krummrich <dakr@kernel.org>
Mon, 21 Jul 2025 09:16:11 +0000 (11:16 +0200)
Check that gpfifo.post() exists before trying to call it.

Fixes: 862450a85b85 ("drm/nouveau/gf100-: track chan progress with non-WFI semaphore release")
Reported-by: Jamie Heilman <jamie@audible.transient.net>
Closes: https://lore.kernel.org/lkml/aElJIo9_Se6tAR1a@audible.transient.net/
Reported-by: Rui Salvaterra <rsalvaterra@gmail.com>
Closes: https://lore.kernel.org/all/CALjTZvZgH0N43rMTcZiDVSX93PFL680hsYPwtp8=Ja1OWPvZ1A@mail.gmail.com/
Tested-by: Rui Salvaterra <rsalvaterra@gmail.com>
Signed-off-by: Ben Skeggs <bskeggs@nvidia.com>
Link: https://lore.kernel.org/r/20250714025923.29591-1-bskeggs@nvidia.com
Signed-off-by: Danilo Krummrich <dakr@kernel.org>
drivers/gpu/drm/nouveau/nvif/chan.c

index baa10227d51a552fbc8b463c4ef3f7abb19b36d7..80c01017d642c2488c336e79bcbaa9b0cb4d7d66 100644 (file)
@@ -39,6 +39,9 @@ nvif_chan_gpfifo_post(struct nvif_chan *chan)
        const u32 pbptr = (chan->push.cur - map) + chan->func->gpfifo.post_size;
        const u32 gpptr = (chan->gpfifo.cur + 1) & chan->gpfifo.max;
 
+       if (!chan->func->gpfifo.post)
+               return 0;
+
        return chan->func->gpfifo.post(chan, gpptr, pbptr);
 }