提交 fe34765b 编写于 作者: D Dave Airlie 提交者: Dave Airlie

drm: drm_ioctl.c sync with fixes from CVS

Apply the fixes from CVS that were outstanding for this file
Signed-off-by: NDave Airlie <airlied@linux.ie>
上级 b3a80a22
...@@ -137,17 +137,22 @@ int drm_setunique(struct inode *inode, struct file *filp, ...@@ -137,17 +137,22 @@ int drm_setunique(struct inode *inode, struct file *filp,
static int drm_set_busid(drm_device_t * dev) static int drm_set_busid(drm_device_t * dev)
{ {
int len;
if (dev->unique != NULL) if (dev->unique != NULL)
return EBUSY; return EBUSY;
dev->unique_len = 20; dev->unique_len = 40;
dev->unique = drm_alloc(dev->unique_len + 1, DRM_MEM_DRIVER); dev->unique = drm_alloc(dev->unique_len + 1, DRM_MEM_DRIVER);
if (dev->unique == NULL) if (dev->unique == NULL)
return ENOMEM; return ENOMEM;
snprintf(dev->unique, dev->unique_len, "pci:%04x:%02x:%02x.%d", len = snprintf(dev->unique, dev->unique_len, "pci:%04x:%02x:%02x.%d",
dev->pci_domain, dev->pci_bus, dev->pci_slot, dev->pci_func); dev->pci_domain, dev->pci_bus, dev->pci_slot, dev->pci_func);
if (len > dev->unique_len)
DRM_ERROR("Unique buffer overflowed\n");
dev->devname = dev->devname =
drm_alloc(strlen(dev->driver->pci_driver.name) + dev->unique_len + drm_alloc(strlen(dev->driver->pci_driver.name) + dev->unique_len +
2, DRM_MEM_DRIVER); 2, DRM_MEM_DRIVER);
...@@ -239,7 +244,7 @@ int drm_getclient(struct inode *inode, struct file *filp, ...@@ -239,7 +244,7 @@ int drm_getclient(struct inode *inode, struct file *filp,
{ {
drm_file_t *priv = filp->private_data; drm_file_t *priv = filp->private_data;
drm_device_t *dev = priv->head->dev; drm_device_t *dev = priv->head->dev;
drm_client_t __user *argp = (void __user *)arg; drm_client_t __user *argp = (drm_client_t __user *)arg;
drm_client_t client; drm_client_t client;
drm_file_t *pt; drm_file_t *pt;
int idx; int idx;
...@@ -262,7 +267,7 @@ int drm_getclient(struct inode *inode, struct file *filp, ...@@ -262,7 +267,7 @@ int drm_getclient(struct inode *inode, struct file *filp,
client.iocs = pt->ioctl_count; client.iocs = pt->ioctl_count;
up(&dev->struct_sem); up(&dev->struct_sem);
if (copy_to_user((drm_client_t __user *) arg, &client, sizeof(client))) if (copy_to_user(argp, &client, sizeof(client)))
return -EFAULT; return -EFAULT;
return 0; return 0;
} }
...@@ -339,7 +344,7 @@ int drm_setversion(DRM_IOCTL_ARGS) ...@@ -339,7 +344,7 @@ int drm_setversion(DRM_IOCTL_ARGS)
if (sv.drm_di_major != DRM_IF_MAJOR || if (sv.drm_di_major != DRM_IF_MAJOR ||
sv.drm_di_minor < 0 || sv.drm_di_minor > DRM_IF_MINOR) sv.drm_di_minor < 0 || sv.drm_di_minor > DRM_IF_MINOR)
return EINVAL; return EINVAL;
if_version = DRM_IF_VERSION(sv.drm_di_major, sv.drm_dd_minor); if_version = DRM_IF_VERSION(sv.drm_di_major, sv.drm_di_minor);
dev->if_version = DRM_MAX(if_version, dev->if_version); dev->if_version = DRM_MAX(if_version, dev->if_version);
if (sv.drm_di_minor >= 1) { if (sv.drm_di_minor >= 1) {
/* /*
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册