{
drm_file_t *priv = filp->private_data;
drm_device_t *dev = priv->dev;
+ drm_unique_t __user *argp = (void __user *)arg;
drm_unique_t u;
- if (copy_from_user(&u, (drm_unique_t *)arg, sizeof(u)))
+ if (copy_from_user(&u, argp, sizeof(u)))
return -EFAULT;
if (u.unique_len >= dev->unique_len) {
if (copy_to_user(u.unique, dev->unique, dev->unique_len))
return -EFAULT;
}
u.unique_len = dev->unique_len;
- if (copy_to_user((drm_unique_t *)arg, &u, sizeof(u)))
+ if (copy_to_user(argp, &u, sizeof(u)))
return -EFAULT;
return 0;
}
if (dev->unique_len || dev->unique) return -EBUSY;
- if (copy_from_user(&u, (drm_unique_t *)arg, sizeof(u))) return -EFAULT;
+ if (copy_from_user(&u, (drm_unique_t __user *)arg, sizeof(u)))
+ return -EFAULT;
if (!u.unique_len || u.unique_len > 1024) return -EINVAL;
{
drm_file_t *priv = filp->private_data;
drm_device_t *dev = priv->dev;
+ drm_map_t __user *argp = (void __user *)arg;
drm_map_t map;
drm_map_list_t *r_list = NULL;
struct list_head *list;
int idx;
int i;
- if (copy_from_user(&map, (drm_map_t *)arg, sizeof(map)))
+ if (copy_from_user(&map, argp, sizeof(map)))
return -EFAULT;
idx = map.offset;
map.mtrr = r_list->map->mtrr;
up(&dev->struct_sem);
- if (copy_to_user((drm_map_t *)arg, &map, sizeof(map))) return -EFAULT;
+ if (copy_to_user(argp, &map, sizeof(map))) return -EFAULT;
return 0;
}
{
drm_file_t *priv = filp->private_data;
drm_device_t *dev = priv->dev;
+ drm_client_t __user *argp = (void __user *)arg;
drm_client_t client;
drm_file_t *pt;
int idx;
int i;
- if (copy_from_user(&client, (drm_client_t *)arg, sizeof(client)))
+ if (copy_from_user(&client, argp, sizeof(client)))
return -EFAULT;
idx = client.idx;
down(&dev->struct_sem);
client.iocs = pt->ioctl_count;
up(&dev->struct_sem);
- if (copy_to_user((drm_client_t *)arg, &client, sizeof(client)))
+ if (copy_to_user((drm_client_t __user *)arg, &client, sizeof(client)))
return -EFAULT;
return 0;
}
up(&dev->struct_sem);
- if (copy_to_user((drm_stats_t *)arg, &stats, sizeof(stats)))
+ if (copy_to_user((drm_stats_t __user *)arg, &stats, sizeof(stats)))
return -EFAULT;
return 0;
}
drm_set_version_t sv;
drm_set_version_t retv;
int if_version;
+ drm_set_version_t __user *argp = (void __user *)data;
- DRM_COPY_FROM_USER_IOCTL(sv, (drm_set_version_t *)data, sizeof(sv));
+ DRM_COPY_FROM_USER_IOCTL(sv, argp, sizeof(sv));
retv.drm_di_major = DRM_IF_MAJOR;
retv.drm_di_minor = DRM_IF_MINOR;
retv.drm_dd_major = DRIVER_MAJOR;
retv.drm_dd_minor = DRIVER_MINOR;
- DRM_COPY_TO_USER_IOCTL((drm_set_version_t *)data, retv, sizeof(sv));
+ DRM_COPY_TO_USER_IOCTL(argp, retv, sizeof(sv));
if (sv.drm_di_major != -1) {
if (sv.drm_di_major != DRM_IF_MAJOR ||
if (sv.drm_dd_major != DRIVER_MAJOR ||
sv.drm_dd_minor < 0 || sv.drm_dd_minor > DRIVER_MINOR)
return EINVAL;
-#ifdef DRIVER_SETVERSION
- DRIVER_SETVERSION(dev, &sv);
-#endif
+
+ if (dev->fn_tbl.set_version)
+ dev->fn_tbl.set_version(dev, &sv);
}
return 0;
}