소스 검색

drm/nouveau: protect ramht_find() from oopsing if on channel without ramht

This doesn't actually happen now, but there's a test case for an earlier
kernel where a GPU error is signalled on one of nv50's fake channels, and
the ramht lookup by the IRQ handler triggered an oops.

This adds a check for RAMHT's existance on a channel before looking up
an object handle.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs 15 년 전
부모
커밋
2941482ead
1개의 변경된 파일3개의 추가작업 그리고 0개의 파일을 삭제
  1. 3 0
      drivers/gpu/drm/nouveau/nouveau_ramht.c

+ 3 - 0
drivers/gpu/drm/nouveau/nouveau_ramht.c

@@ -197,6 +197,9 @@ nouveau_ramht_find(struct nouveau_channel *chan, u32 handle)
 	struct nouveau_gpuobj *gpuobj = NULL;
 	unsigned long flags;
 
+	if (unlikely(!chan->ramht))
+		return NULL;
+
 	spin_lock_irqsave(&ramht->lock, flags);
 	list_for_each_entry(entry, &chan->ramht->entries, head) {
 		if (entry->channel == chan && entry->handle == handle) {