]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
drm/nouveau/nvif: remove route/token
authorBen Skeggs <bskeggs@nvidia.com>
Fri, 26 Jul 2024 04:38:06 +0000 (14:38 +1000)
committerDanilo Krummrich <dakr@kernel.org>
Sat, 27 Jul 2024 01:05:28 +0000 (03:05 +0200)
These were a cludge used to prevent userspace's nvif ioctl from
accessing objects created by the kernel for the same client.

That interface was removed in a previous patch, so these are no
longer useful for anything.

Signed-off-by: Ben Skeggs <bskeggs@nvidia.com>
Signed-off-by: Danilo Krummrich <dakr@kernel.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20240726043828.58966-16-bskeggs@nvidia.com
drivers/gpu/drm/nouveau/include/nvif/client.h
drivers/gpu/drm/nouveau/include/nvkm/core/object.h
drivers/gpu/drm/nouveau/include/nvkm/core/oclass.h
drivers/gpu/drm/nouveau/nouveau_abi16.c
drivers/gpu/drm/nouveau/nvif/client.c
drivers/gpu/drm/nouveau/nvif/object.c
drivers/gpu/drm/nouveau/nvkm/core/client.c
drivers/gpu/drm/nouveau/nvkm/core/ioctl.c
drivers/gpu/drm/nouveau/nvkm/core/object.c
drivers/gpu/drm/nouveau/nvkm/core/uevent.c

index 5d9395e651b6bc1070218c138d4e218634a66f21..64b033222c564683ac78ff9c32f8a12412cc2132 100644 (file)
@@ -8,7 +8,6 @@ struct nvif_client {
        struct nvif_object object;
        const struct nvif_driver *driver;
        u64 version;
-       u8 route;
 };
 
 int  nvif_client_ctor(struct nvif_client *parent, const char *name, u64 device,
index ed1f66360782a7236cc740668e082abfd890ce52..d4f1c964ba310a3aae6c49605fa585302c377308 100644 (file)
@@ -15,8 +15,6 @@ struct nvkm_object {
 
        struct list_head head;
        struct list_head tree;
-       u8  route;
-       u64 token;
        u64 object;
        struct rb_node node;
 };
index 8e1b945d38f38e1415d777d0bec1763c2f9561fb..cad05f0e7948fa87f37cc898fb1c782a4948c868 100644 (file)
@@ -21,8 +21,6 @@ struct nvkm_oclass {
        const void *priv;
        const void *engn;
        u32 handle;
-       u8  route;
-       u64 token;
        u64 object;
        struct nvkm_client *client;
        struct nvkm_object *parent;
index a0513192005225227ae30dd8f3824d17b141361b..81ddb9eadc8aca6193b241ed98f8a121acae8ee9 100644 (file)
@@ -530,7 +530,6 @@ nouveau_abi16_ioctl_grobj_alloc(ABI16_IOCTL_ARGS)
        struct nouveau_abi16 *abi16 = nouveau_abi16_get(file_priv);
        struct nouveau_abi16_chan *chan;
        struct nouveau_abi16_ntfy *ntfy;
-       struct nvif_client *client;
        struct nvif_sclass *sclass;
        s32 oclass = 0;
        int ret, i;
@@ -540,7 +539,6 @@ nouveau_abi16_ioctl_grobj_alloc(ABI16_IOCTL_ARGS)
 
        if (init->handle == ~0)
                return nouveau_abi16_put(abi16, -EINVAL);
-       client = &abi16->cli->base;
 
        chan = nouveau_abi16_chan(abi16, init->channel);
        if (!chan)
@@ -605,10 +603,8 @@ nouveau_abi16_ioctl_grobj_alloc(ABI16_IOCTL_ARGS)
 
        list_add(&ntfy->head, &chan->notifiers);
 
-       client->route = NVDRM_OBJECT_ABI16;
        ret = nvif_object_ctor(&chan->chan->user, "abi16EngObj", init->handle,
                               oclass, NULL, 0, &ntfy->object);
-       client->route = NVDRM_OBJECT_NVIF;
 
        if (ret)
                nouveau_abi16_ntfy_fini(chan, ntfy);
@@ -624,7 +620,6 @@ nouveau_abi16_ioctl_notifierobj_alloc(ABI16_IOCTL_ARGS)
        struct nouveau_abi16_chan *chan;
        struct nouveau_abi16_ntfy *ntfy;
        struct nvif_device *device;
-       struct nvif_client *client;
        struct nv_dma_v0 args = {};
        int ret;
 
@@ -635,7 +630,6 @@ nouveau_abi16_ioctl_notifierobj_alloc(ABI16_IOCTL_ARGS)
        /* completely unnecessary for these chipsets... */
        if (unlikely(device->info.family >= NV_DEVICE_INFO_V0_FERMI))
                return nouveau_abi16_put(abi16, -EINVAL);
-       client = &abi16->cli->base;
 
        chan = nouveau_abi16_chan(abi16, info->channel);
        if (!chan)
@@ -672,11 +666,9 @@ nouveau_abi16_ioctl_notifierobj_alloc(ABI16_IOCTL_ARGS)
                args.limit += chan->ntfy->offset;
        }
 
-       client->route = NVDRM_OBJECT_ABI16;
        ret = nvif_object_ctor(&chan->chan->user, "abi16Ntfy", info->handle,
                               NV_DMA_IN_MEMORY, &args, sizeof(args),
                               &ntfy->object);
-       client->route = NVDRM_OBJECT_NVIF;
        if (ret)
                goto done;
 
index 3a27245f467f80868a560504d15b5dd2181430a0..cd5439b73ac7f0881526cef62b184ef926dd4ffc 100644 (file)
@@ -79,7 +79,6 @@ nvif_client_ctor(struct nvif_client *parent, const char *name, u64 device,
 
        client->object.client = client;
        client->object.handle = ~0;
-       client->route = NVIF_IOCTL_V0_ROUTE_NVIF;
        client->driver = parent->driver;
 
        if (ret == 0) {
index 4d1aaee8fe15fcb1a8e2514095066809b8ebe1e7..2b3e0519784617b3fe553276dcee406acd67812c 100644 (file)
@@ -40,7 +40,6 @@ nvif_object_ioctl(struct nvif_object *object, void *data, u32 size, void **hack)
                        args->v0.object = nvif_handle(object);
                else
                        args->v0.object = 0;
-               args->v0.owner = NVIF_IOCTL_V0_OWNER_ANY;
        } else
                return -ENOSYS;
 
@@ -286,8 +285,6 @@ nvif_object_ctor(struct nvif_object *parent, const char *name, u32 handle,
                args->ioctl.version = 0;
                args->ioctl.type = NVIF_IOCTL_V0_NEW;
                args->new.version = 0;
-               args->new.route = parent->client->route;
-               args->new.token = nvif_handle(object);
                args->new.object = nvif_handle(object);
                args->new.handle = handle;
                args->new.oclass = oclass;
index 48416c5039a182757867af780ab0a537466d2a83..95cbb5b682f2c4d0b61e019f050386f0a58911d3 100644 (file)
@@ -51,8 +51,6 @@ nvkm_uclient_new(const struct nvkm_oclass *oclass, void *argv, u32 argc,
 
        client->object.client = oclass->client;
        client->object.handle = oclass->handle;
-       client->object.route  = oclass->route;
-       client->object.token  = oclass->token;
        client->object.object = oclass->object;
        client->debug = oclass->client->debug;
        *pobject = &client->object;
index 0b33287e43a70b846c345d8b442a3b0dc0a3bb3b..39d5c97008671b3a53f40af0319908a3cfa97d22 100644 (file)
@@ -112,10 +112,9 @@ nvkm_ioctl_new(struct nvkm_client *client,
 
        nvif_ioctl(parent, "new size %d\n", size);
        if (!(ret = nvif_unpack(ret, &data, &size, args->v0, 0, 0, true))) {
-               nvif_ioctl(parent, "new vers %d handle %08x class %08x "
-                                  "route %02x token %llx object %016llx\n",
+               nvif_ioctl(parent, "new vers %d handle %08x class %08x object %016llx\n",
                           args->v0.version, args->v0.handle, args->v0.oclass,
-                          args->v0.route, args->v0.token, args->v0.object);
+                          args->v0.object);
        } else
                return ret;
 
@@ -127,8 +126,6 @@ nvkm_ioctl_new(struct nvkm_client *client,
        do {
                memset(&oclass, 0x00, sizeof(oclass));
                oclass.handle = args->v0.handle;
-               oclass.route  = args->v0.route;
-               oclass.token  = args->v0.token;
                oclass.object = args->v0.object;
                oclass.client = client;
                oclass.parent = parent;
@@ -331,7 +328,7 @@ nvkm_ioctl_v0[] = {
 
 static int
 nvkm_ioctl_path(struct nvkm_client *client, u64 handle, u32 type,
-               void *data, u32 size, u8 owner, u8 *route, u64 *token)
+               void *data, u32 size)
 {
        struct nvkm_object *object;
        int ret;
@@ -342,13 +339,6 @@ nvkm_ioctl_path(struct nvkm_client *client, u64 handle, u32 type,
                return PTR_ERR(object);
        }
 
-       if (owner != NVIF_IOCTL_V0_OWNER_ANY && owner != object->route) {
-               nvif_ioctl(&client->object, "route != owner\n");
-               return -EACCES;
-       }
-       *route = object->route;
-       *token = object->token;
-
        if (ret = -EINVAL, type < ARRAY_SIZE(nvkm_ioctl_v0)) {
                if (nvkm_ioctl_v0[type].version == 0)
                        ret = nvkm_ioctl_v0[type].func(client, object, data, size);
@@ -374,8 +364,7 @@ nvkm_ioctl(struct nvkm_client *client, void *data, u32 size, void **hack)
                           args->v0.version, args->v0.type, args->v0.object,
                           args->v0.owner);
                ret = nvkm_ioctl_path(client, args->v0.object, args->v0.type,
-                                     data, size, args->v0.owner,
-                                     &args->v0.route, &args->v0.token);
+                                     data, size);
        }
 
        if (ret != 1) {
index aea3ba72027abfbdf0456f065bce416eac26b348..580b8c7f25af04b572d5a7bee30c6cb7159493ef 100644 (file)
@@ -313,8 +313,6 @@ nvkm_object_ctor(const struct nvkm_object_func *func,
        object->engine = nvkm_engine_ref(oclass->engine);
        object->oclass = oclass->base.oclass;
        object->handle = oclass->handle;
-       object->route  = oclass->route;
-       object->token  = oclass->token;
        object->object = oclass->object;
        INIT_LIST_HEAD(&object->head);
        INIT_LIST_HEAD(&object->tree);
index ba9d9edaec7551e3fe0359526feb497883b501ae..cc254c390a571989c17565a1f32cced9d5c7f434 100644 (file)
@@ -116,9 +116,9 @@ nvkm_uevent_ntfy(struct nvkm_event_ntfy *ntfy, u32 bits)
        struct nvkm_client *client = uevent->object.client;
 
        if (uevent->func)
-               return uevent->func(uevent->parent, uevent->object.token, bits);
+               return uevent->func(uevent->parent, uevent->object.object, bits);
 
-       return client->event(uevent->object.token, NULL, 0);
+       return client->event(uevent->object.object, NULL, 0);
 }
 
 int