diff options
| author | Ben Skeggs <bskeggs@redhat.com> | 2015-11-24 00:34:51 -0500 |
|---|---|---|
| committer | Ben Skeggs <bskeggs@redhat.com> | 2015-11-25 00:31:21 -0500 |
| commit | f5e551873e5eaf506b2aa870f56a7ba10a51221b (patch) | |
| tree | 076c93ceafa81af8d39c864a447778026596dd8a /drivers/gpu | |
| parent | 0d7fc24616d3aa7b6d4aad03bac25ec23a74b9a6 (diff) | |
drm/nouveau/nvif: allow userspace access to its own client object
Regression from "abi16: implement limited interoperability with
usif/nvif".
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drivers/gpu')
| -rw-r--r-- | drivers/gpu/drm/nouveau/nouveau_drm.h | 4 | ||||
| -rw-r--r-- | drivers/gpu/drm/nouveau/nouveau_usif.c | 5 |
2 files changed, 7 insertions, 2 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.h b/drivers/gpu/drm/nouveau/nouveau_drm.h index 3050042e6c6d..a02813e994ec 100644 --- a/drivers/gpu/drm/nouveau/nouveau_drm.h +++ b/drivers/gpu/drm/nouveau/nouveau_drm.h | |||
| @@ -39,6 +39,7 @@ | |||
| 39 | 39 | ||
| 40 | #include <nvif/client.h> | 40 | #include <nvif/client.h> |
| 41 | #include <nvif/device.h> | 41 | #include <nvif/device.h> |
| 42 | #include <nvif/ioctl.h> | ||
| 42 | 43 | ||
| 43 | #include <drmP.h> | 44 | #include <drmP.h> |
| 44 | 45 | ||
| @@ -65,9 +66,10 @@ struct nouveau_drm_tile { | |||
| 65 | }; | 66 | }; |
| 66 | 67 | ||
| 67 | enum nouveau_drm_object_route { | 68 | enum nouveau_drm_object_route { |
| 68 | NVDRM_OBJECT_NVIF = 0, | 69 | NVDRM_OBJECT_NVIF = NVIF_IOCTL_V0_OWNER_NVIF, |
| 69 | NVDRM_OBJECT_USIF, | 70 | NVDRM_OBJECT_USIF, |
| 70 | NVDRM_OBJECT_ABI16, | 71 | NVDRM_OBJECT_ABI16, |
| 72 | NVDRM_OBJECT_ANY = NVIF_IOCTL_V0_OWNER_ANY, | ||
| 71 | }; | 73 | }; |
| 72 | 74 | ||
| 73 | enum nouveau_drm_notify_route { | 75 | enum nouveau_drm_notify_route { |
diff --git a/drivers/gpu/drm/nouveau/nouveau_usif.c b/drivers/gpu/drm/nouveau/nouveau_usif.c index 89dc4ce63490..6ae1b3494bcd 100644 --- a/drivers/gpu/drm/nouveau/nouveau_usif.c +++ b/drivers/gpu/drm/nouveau/nouveau_usif.c | |||
| @@ -313,7 +313,10 @@ usif_ioctl(struct drm_file *filp, void __user *user, u32 argc) | |||
| 313 | if (nvif_unpack(argv->v0, 0, 0, true)) { | 313 | if (nvif_unpack(argv->v0, 0, 0, true)) { |
| 314 | /* block access to objects not created via this interface */ | 314 | /* block access to objects not created via this interface */ |
| 315 | owner = argv->v0.owner; | 315 | owner = argv->v0.owner; |
| 316 | argv->v0.owner = NVDRM_OBJECT_USIF; | 316 | if (argv->v0.object == 0ULL) |
| 317 | argv->v0.owner = NVDRM_OBJECT_ANY; /* except client */ | ||
| 318 | else | ||
| 319 | argv->v0.owner = NVDRM_OBJECT_USIF; | ||
| 317 | } else | 320 | } else |
| 318 | goto done; | 321 | goto done; |
| 319 | 322 | ||
