diff -Npaur a/drivers/gpu/drm/nouveau/nouveau_drm.c b/drivers/gpu/drm/nouveau/nouveau_drm.c --- a/drivers/gpu/drm/nouveau/nouveau_drm.c 2025-07-21 10:31:33.191428569 -0400 +++ b/drivers/gpu/drm/nouveau/nouveau_drm.c 2025-07-21 10:33:25.371736507 -0400 @@ -1284,7 +1284,7 @@ nouveau_ioctls[] = { DRM_IOCTL_DEF_DRV(NOUVEAU_EXEC, nouveau_exec_ioctl_exec, DRM_RENDER_ALLOW), }; -#define DRM_IOCTL_NOUVEAU_NVIF _IOC(_IOC_READ | _IOC_WRITE, DRM_IOCTL_BASE, \ +#define DRM_IOCTL_NOUVEAU_NVIF _IOC(_IOC_WRITE, DRM_IOCTL_BASE, \ DRM_COMMAND_BASE + DRM_NOUVEAU_NVIF, 0) long @@ -1300,7 +1300,7 @@ nouveau_drm_ioctl(struct file *file, uns return ret; } - if ((cmd & ~IOCSIZE_MASK) == DRM_IOCTL_NOUVEAU_NVIF) + if ((cmd & ~IOCSIZE_MASK | IOC_OUT) == DRM_IOCTL_NOUVEAU_NVIF) ret = nouveau_abi16_ioctl(filp, (void __user *)arg, _IOC_SIZE(cmd)); else ret = drm_ioctl(file, cmd, arg);