Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 174483
b: refs/heads/master
c: 140a45f
h: refs/heads/master
i:
  174481: 0f53900
  174479: b6ff25b
v: v3
  • Loading branch information
Andres Salomon authored and Dave Airlie committed Nov 18, 2009
1 parent b58dc9a commit e7f0d52
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 13 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 156822f7175d9ceb9d7e808502d3c5de8841e047
refs/heads/master: 140a45fc3253746e1e42feafc63509df5d90889e
34 changes: 22 additions & 12 deletions trunk/drivers/gpu/drm/drm_drv.c
Original file line number Diff line number Diff line change
Expand Up @@ -368,14 +368,25 @@ module_exit(drm_core_exit);
/**
* Copy and IOCTL return string to user space
*/
#define DRM_COPY(name, value) \
len = strlen(value); \
if (len > name##_len) len = name##_len; \
name##_len = strlen(value); \
if (len && name) { \
if (copy_to_user(name, value, len)) \
return -EFAULT; \
}
static int drm_copy_field(char *buf, size_t *buf_len, const char *value)
{
int len;

/* don't overflow userbuf */
len = strlen(value);
if (len > *buf_len)
len = *buf_len;

/* let userspace know exact length of driver value (which could be
* larger than the userspace-supplied buffer) */
*buf_len = strlen(value);

/* finally, try filling in the userbuf */
if (len && buf)
if (copy_to_user(buf, value, len))
return -EFAULT;
return 0;
}

/**
* Get version information
Expand All @@ -392,14 +403,13 @@ static int drm_version(struct drm_device *dev, void *data,
struct drm_file *file_priv)
{
struct drm_version *version = data;
int len;

version->version_major = dev->driver->major;
version->version_minor = dev->driver->minor;
version->version_patchlevel = dev->driver->patchlevel;
DRM_COPY(version->name, dev->driver->name);
DRM_COPY(version->date, dev->driver->date);
DRM_COPY(version->desc, dev->driver->desc);
drm_copy_field(version->name, &version->name_len, dev->driver->name);
drm_copy_field(version->date, &version->date_len, dev->driver->date);
drm_copy_field(version->desc, &version->desc_len, dev->driver->desc);

return 0;
}
Expand Down

0 comments on commit e7f0d52

Please sign in to comment.