Commit 1971f04e authored by Ben Skeggs's avatar Ben Skeggs
Browse files

drm/nouveau/dmaobj: reject unsupported parent types instead of half-succeeding



Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent 9456f7d1
Loading
Loading
Loading
Loading
+8 −5
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@
 */

#include <core/gpuobj.h>
#include <core/class.h>

#include <subdev/fb.h>
#include <subdev/vm/nv04.h>
@@ -118,16 +119,18 @@ nv04_dmaobj_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
		return ret;

	switch (nv_mclass(parent)) {
	case 0x006b:
	case 0x006e:
	case 0x176e:
	case 0x406e:
	case NV_DEVICE_CLASS:
		break;
	case NV03_CHANNEL_DMA_CLASS:
	case NV10_CHANNEL_DMA_CLASS:
	case NV17_CHANNEL_DMA_CLASS:
	case NV40_CHANNEL_DMA_CLASS:
		ret = dmaeng->bind(dmaeng, *pobject, &dmaobj->base, &gpuobj);
		nouveau_object_ref(NULL, pobject);
		*pobject = nv_object(gpuobj);
		break;
	default:
		break;
		return -EINVAL;
	}

	return ret;
+8 −5
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@
 */

#include <core/gpuobj.h>
#include <core/class.h>

#include <subdev/fb.h>
#include <engine/dmaobj.h>
@@ -109,16 +110,18 @@ nv50_dmaobj_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
		return ret;

	switch (nv_mclass(parent)) {
	case 0x506e:
	case 0x506f:
	case 0x826e:
	case 0x826f:
	case NV_DEVICE_CLASS:
		break;
	case NV50_CHANNEL_DMA_CLASS:
	case NV84_CHANNEL_DMA_CLASS:
	case NV50_CHANNEL_IND_CLASS:
	case NV84_CHANNEL_IND_CLASS:
		ret = dmaeng->bind(dmaeng, *pobject, &dmaobj->base, &gpuobj);
		nouveau_object_ref(NULL, pobject);
		*pobject = nv_object(gpuobj);
		break;
	default:
		break;
		return -EINVAL;
	}

	return ret;