xf86drm: Unconditionally clear ioctl structs

We really have to do this to avoid surprises when extending the ABI
later on. Especially when growing the structures.

A bit overkill to update all the old legacy ioctl wrappers, but can't
hurt really either.

Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
Reviewed-by: Rob Clark <robdclark@gmail.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
main
Daniel Vetter 2015-02-11 12:41:04 +01:00
parent 80834b377e
commit fd38794344
1 changed files with 77 additions and 35 deletions

112
xf86drm.c
View File

@ -89,6 +89,8 @@
#define DRM_NODE_PRIMARY 1 #define DRM_NODE_PRIMARY 1
#define DRM_NODE_RENDER 2 #define DRM_NODE_RENDER 2
#define memclear(s) memset(&s, 0, sizeof(s))
static drmServerInfoPtr drm_server_info; static drmServerInfoPtr drm_server_info;
void drmSetServerInfo(drmServerInfoPtr info) void drmSetServerInfo(drmServerInfoPtr info)
@ -766,12 +768,7 @@ drmVersionPtr drmGetVersion(int fd)
drmVersionPtr retval; drmVersionPtr retval;
drm_version_t *version = drmMalloc(sizeof(*version)); drm_version_t *version = drmMalloc(sizeof(*version));
version->name_len = 0; memclear(version);
version->name = NULL;
version->date_len = 0;
version->date = NULL;
version->desc_len = 0;
version->desc = NULL;
if (drmIoctl(fd, DRM_IOCTL_VERSION, version)) { if (drmIoctl(fd, DRM_IOCTL_VERSION, version)) {
drmFreeKernelVersion(version); drmFreeKernelVersion(version);
@ -839,9 +836,12 @@ drmVersionPtr drmGetLibVersion(int fd)
int drmGetCap(int fd, uint64_t capability, uint64_t *value) int drmGetCap(int fd, uint64_t capability, uint64_t *value)
{ {
struct drm_get_cap cap = { capability, 0 }; struct drm_get_cap cap;
int ret; int ret;
memclear(cap);
cap.capability = capability;
ret = drmIoctl(fd, DRM_IOCTL_GET_CAP, &cap); ret = drmIoctl(fd, DRM_IOCTL_GET_CAP, &cap);
if (ret) if (ret)
return ret; return ret;
@ -852,7 +852,11 @@ int drmGetCap(int fd, uint64_t capability, uint64_t *value)
int drmSetClientCap(int fd, uint64_t capability, uint64_t value) int drmSetClientCap(int fd, uint64_t capability, uint64_t value)
{ {
struct drm_set_client_cap cap = { capability, value }; struct drm_set_client_cap cap;
memclear(cap);
cap.capability = capability;
cap.value = value;
return drmIoctl(fd, DRM_IOCTL_SET_CLIENT_CAP, &cap); return drmIoctl(fd, DRM_IOCTL_SET_CLIENT_CAP, &cap);
} }
@ -887,8 +891,7 @@ char *drmGetBusid(int fd)
{ {
drm_unique_t u; drm_unique_t u;
u.unique_len = 0; memclear(u);
u.unique = NULL;
if (drmIoctl(fd, DRM_IOCTL_GET_UNIQUE, &u)) if (drmIoctl(fd, DRM_IOCTL_GET_UNIQUE, &u))
return NULL; return NULL;
@ -917,6 +920,7 @@ int drmSetBusid(int fd, const char *busid)
{ {
drm_unique_t u; drm_unique_t u;
memclear(u);
u.unique = (char *)busid; u.unique = (char *)busid;
u.unique_len = strlen(busid); u.unique_len = strlen(busid);
@ -930,6 +934,8 @@ int drmGetMagic(int fd, drm_magic_t * magic)
{ {
drm_auth_t auth; drm_auth_t auth;
memclear(auth);
*magic = 0; *magic = 0;
if (drmIoctl(fd, DRM_IOCTL_GET_MAGIC, &auth)) if (drmIoctl(fd, DRM_IOCTL_GET_MAGIC, &auth))
return -errno; return -errno;
@ -941,6 +947,7 @@ int drmAuthMagic(int fd, drm_magic_t magic)
{ {
drm_auth_t auth; drm_auth_t auth;
memclear(auth);
auth.magic = magic; auth.magic = magic;
if (drmIoctl(fd, DRM_IOCTL_AUTH_MAGIC, &auth)) if (drmIoctl(fd, DRM_IOCTL_AUTH_MAGIC, &auth))
return -errno; return -errno;
@ -1002,9 +1009,9 @@ int drmAddMap(int fd, drm_handle_t offset, drmSize size, drmMapType type,
{ {
drm_map_t map; drm_map_t map;
memclear(map);
map.offset = offset; map.offset = offset;
map.size = size; map.size = size;
map.handle = 0;
map.type = type; map.type = type;
map.flags = flags; map.flags = flags;
if (drmIoctl(fd, DRM_IOCTL_ADD_MAP, &map)) if (drmIoctl(fd, DRM_IOCTL_ADD_MAP, &map))
@ -1018,6 +1025,7 @@ int drmRmMap(int fd, drm_handle_t handle)
{ {
drm_map_t map; drm_map_t map;
memclear(map);
map.handle = (void *)(uintptr_t)handle; map.handle = (void *)(uintptr_t)handle;
if(drmIoctl(fd, DRM_IOCTL_RM_MAP, &map)) if(drmIoctl(fd, DRM_IOCTL_RM_MAP, &map))
@ -1046,10 +1054,9 @@ int drmAddBufs(int fd, int count, int size, drmBufDescFlags flags,
{ {
drm_buf_desc_t request; drm_buf_desc_t request;
memclear(request);
request.count = count; request.count = count;
request.size = size; request.size = size;
request.low_mark = 0;
request.high_mark = 0;
request.flags = flags; request.flags = flags;
request.agp_start = agp_offset; request.agp_start = agp_offset;
@ -1063,8 +1070,7 @@ int drmMarkBufs(int fd, double low, double high)
drm_buf_info_t info; drm_buf_info_t info;
int i; int i;
info.count = 0; memclear(info);
info.list = NULL;
if (drmIoctl(fd, DRM_IOCTL_INFO_BUFS, &info)) if (drmIoctl(fd, DRM_IOCTL_INFO_BUFS, &info))
return -EINVAL; return -EINVAL;
@ -1114,6 +1120,7 @@ int drmFreeBufs(int fd, int count, int *list)
{ {
drm_buf_free_t request; drm_buf_free_t request;
memclear(request);
request.count = count; request.count = count;
request.list = list; request.list = list;
if (drmIoctl(fd, DRM_IOCTL_FREE_BUFS, &request)) if (drmIoctl(fd, DRM_IOCTL_FREE_BUFS, &request))
@ -1202,8 +1209,7 @@ drmBufInfoPtr drmGetBufInfo(int fd)
drmBufInfoPtr retval; drmBufInfoPtr retval;
int i; int i;
info.count = 0; memclear(info);
info.list = NULL;
if (drmIoctl(fd, DRM_IOCTL_INFO_BUFS, &info)) if (drmIoctl(fd, DRM_IOCTL_INFO_BUFS, &info))
return NULL; return NULL;
@ -1253,9 +1259,7 @@ drmBufMapPtr drmMapBufs(int fd)
drmBufMapPtr retval; drmBufMapPtr retval;
int i; int i;
bufs.count = 0; memclear(bufs);
bufs.list = NULL;
bufs.virtual = NULL;
if (drmIoctl(fd, DRM_IOCTL_MAP_BUFS, &bufs)) if (drmIoctl(fd, DRM_IOCTL_MAP_BUFS, &bufs))
return NULL; return NULL;
@ -1371,6 +1375,7 @@ int drmGetLock(int fd, drm_context_t context, drmLockFlags flags)
{ {
drm_lock_t lock; drm_lock_t lock;
memclear(lock);
lock.context = context; lock.context = context;
lock.flags = 0; lock.flags = 0;
if (flags & DRM_LOCK_READY) lock.flags |= _DRM_LOCK_READY; if (flags & DRM_LOCK_READY) lock.flags |= _DRM_LOCK_READY;
@ -1401,8 +1406,8 @@ int drmUnlock(int fd, drm_context_t context)
{ {
drm_lock_t lock; drm_lock_t lock;
memclear(lock);
lock.context = context; lock.context = context;
lock.flags = 0;
return drmIoctl(fd, DRM_IOCTL_UNLOCK, &lock); return drmIoctl(fd, DRM_IOCTL_UNLOCK, &lock);
} }
@ -1413,8 +1418,7 @@ drm_context_t *drmGetReservedContextList(int fd, int *count)
drm_context_t * retval; drm_context_t * retval;
int i; int i;
res.count = 0; memclear(res);
res.contexts = NULL;
if (drmIoctl(fd, DRM_IOCTL_RES_CTX, &res)) if (drmIoctl(fd, DRM_IOCTL_RES_CTX, &res))
return NULL; return NULL;
@ -1467,7 +1471,7 @@ int drmCreateContext(int fd, drm_context_t *handle)
{ {
drm_ctx_t ctx; drm_ctx_t ctx;
ctx.flags = 0; /* Modified with functions below */ memclear(ctx);
if (drmIoctl(fd, DRM_IOCTL_ADD_CTX, &ctx)) if (drmIoctl(fd, DRM_IOCTL_ADD_CTX, &ctx))
return -errno; return -errno;
*handle = ctx.handle; *handle = ctx.handle;
@ -1478,6 +1482,7 @@ int drmSwitchToContext(int fd, drm_context_t context)
{ {
drm_ctx_t ctx; drm_ctx_t ctx;
memclear(ctx);
ctx.handle = context; ctx.handle = context;
if (drmIoctl(fd, DRM_IOCTL_SWITCH_CTX, &ctx)) if (drmIoctl(fd, DRM_IOCTL_SWITCH_CTX, &ctx))
return -errno; return -errno;
@ -1494,8 +1499,8 @@ int drmSetContextFlags(int fd, drm_context_t context, drm_context_tFlags flags)
* X server (which promises to maintain hardware context), or in the * X server (which promises to maintain hardware context), or in the
* client-side library when buffers are swapped on behalf of two threads. * client-side library when buffers are swapped on behalf of two threads.
*/ */
memclear(ctx);
ctx.handle = context; ctx.handle = context;
ctx.flags = 0;
if (flags & DRM_CONTEXT_PRESERVED) if (flags & DRM_CONTEXT_PRESERVED)
ctx.flags |= _DRM_CONTEXT_PRESERVED; ctx.flags |= _DRM_CONTEXT_PRESERVED;
if (flags & DRM_CONTEXT_2DONLY) if (flags & DRM_CONTEXT_2DONLY)
@ -1510,6 +1515,7 @@ int drmGetContextFlags(int fd, drm_context_t context,
{ {
drm_ctx_t ctx; drm_ctx_t ctx;
memclear(ctx);
ctx.handle = context; ctx.handle = context;
if (drmIoctl(fd, DRM_IOCTL_GET_CTX, &ctx)) if (drmIoctl(fd, DRM_IOCTL_GET_CTX, &ctx))
return -errno; return -errno;
@ -1541,6 +1547,8 @@ int drmGetContextFlags(int fd, drm_context_t context,
int drmDestroyContext(int fd, drm_context_t handle) int drmDestroyContext(int fd, drm_context_t handle)
{ {
drm_ctx_t ctx; drm_ctx_t ctx;
memclear(ctx);
ctx.handle = handle; ctx.handle = handle;
if (drmIoctl(fd, DRM_IOCTL_RM_CTX, &ctx)) if (drmIoctl(fd, DRM_IOCTL_RM_CTX, &ctx))
return -errno; return -errno;
@ -1550,6 +1558,8 @@ int drmDestroyContext(int fd, drm_context_t handle)
int drmCreateDrawable(int fd, drm_drawable_t *handle) int drmCreateDrawable(int fd, drm_drawable_t *handle)
{ {
drm_draw_t draw; drm_draw_t draw;
memclear(draw);
if (drmIoctl(fd, DRM_IOCTL_ADD_DRAW, &draw)) if (drmIoctl(fd, DRM_IOCTL_ADD_DRAW, &draw))
return -errno; return -errno;
*handle = draw.handle; *handle = draw.handle;
@ -1559,6 +1569,8 @@ int drmCreateDrawable(int fd, drm_drawable_t *handle)
int drmDestroyDrawable(int fd, drm_drawable_t handle) int drmDestroyDrawable(int fd, drm_drawable_t handle)
{ {
drm_draw_t draw; drm_draw_t draw;
memclear(draw);
draw.handle = handle; draw.handle = handle;
if (drmIoctl(fd, DRM_IOCTL_RM_DRAW, &draw)) if (drmIoctl(fd, DRM_IOCTL_RM_DRAW, &draw))
return -errno; return -errno;
@ -1571,6 +1583,7 @@ int drmUpdateDrawableInfo(int fd, drm_drawable_t handle,
{ {
drm_update_draw_t update; drm_update_draw_t update;
memclear(update);
update.handle = handle; update.handle = handle;
update.type = type; update.type = type;
update.num = num; update.num = num;
@ -1636,6 +1649,7 @@ int drmAgpEnable(int fd, unsigned long mode)
{ {
drm_agp_mode_t m; drm_agp_mode_t m;
memclear(mode);
m.mode = mode; m.mode = mode;
if (drmIoctl(fd, DRM_IOCTL_AGP_ENABLE, &m)) if (drmIoctl(fd, DRM_IOCTL_AGP_ENABLE, &m))
return -errno; return -errno;
@ -1664,9 +1678,9 @@ int drmAgpAlloc(int fd, unsigned long size, unsigned long type,
{ {
drm_agp_buffer_t b; drm_agp_buffer_t b;
memclear(b);
*handle = DRM_AGP_NO_HANDLE; *handle = DRM_AGP_NO_HANDLE;
b.size = size; b.size = size;
b.handle = 0;
b.type = type; b.type = type;
if (drmIoctl(fd, DRM_IOCTL_AGP_ALLOC, &b)) if (drmIoctl(fd, DRM_IOCTL_AGP_ALLOC, &b))
return -errno; return -errno;
@ -1693,7 +1707,7 @@ int drmAgpFree(int fd, drm_handle_t handle)
{ {
drm_agp_buffer_t b; drm_agp_buffer_t b;
b.size = 0; memclear(b);
b.handle = handle; b.handle = handle;
if (drmIoctl(fd, DRM_IOCTL_AGP_FREE, &b)) if (drmIoctl(fd, DRM_IOCTL_AGP_FREE, &b))
return -errno; return -errno;
@ -1718,6 +1732,7 @@ int drmAgpBind(int fd, drm_handle_t handle, unsigned long offset)
{ {
drm_agp_binding_t b; drm_agp_binding_t b;
memclear(b);
b.handle = handle; b.handle = handle;
b.offset = offset; b.offset = offset;
if (drmIoctl(fd, DRM_IOCTL_AGP_BIND, &b)) if (drmIoctl(fd, DRM_IOCTL_AGP_BIND, &b))
@ -1742,8 +1757,8 @@ int drmAgpUnbind(int fd, drm_handle_t handle)
{ {
drm_agp_binding_t b; drm_agp_binding_t b;
memclear(b);
b.handle = handle; b.handle = handle;
b.offset = 0;
if (drmIoctl(fd, DRM_IOCTL_AGP_UNBIND, &b)) if (drmIoctl(fd, DRM_IOCTL_AGP_UNBIND, &b))
return -errno; return -errno;
return 0; return 0;
@ -1765,6 +1780,8 @@ int drmAgpVersionMajor(int fd)
{ {
drm_agp_info_t i; drm_agp_info_t i;
memclear(i);
if (drmIoctl(fd, DRM_IOCTL_AGP_INFO, &i)) if (drmIoctl(fd, DRM_IOCTL_AGP_INFO, &i))
return -errno; return -errno;
return i.agp_version_major; return i.agp_version_major;
@ -1786,6 +1803,8 @@ int drmAgpVersionMinor(int fd)
{ {
drm_agp_info_t i; drm_agp_info_t i;
memclear(i);
if (drmIoctl(fd, DRM_IOCTL_AGP_INFO, &i)) if (drmIoctl(fd, DRM_IOCTL_AGP_INFO, &i))
return -errno; return -errno;
return i.agp_version_minor; return i.agp_version_minor;
@ -1807,6 +1826,8 @@ unsigned long drmAgpGetMode(int fd)
{ {
drm_agp_info_t i; drm_agp_info_t i;
memclear(i);
if (drmIoctl(fd, DRM_IOCTL_AGP_INFO, &i)) if (drmIoctl(fd, DRM_IOCTL_AGP_INFO, &i))
return 0; return 0;
return i.mode; return i.mode;
@ -1828,6 +1849,8 @@ unsigned long drmAgpBase(int fd)
{ {
drm_agp_info_t i; drm_agp_info_t i;
memclear(i);
if (drmIoctl(fd, DRM_IOCTL_AGP_INFO, &i)) if (drmIoctl(fd, DRM_IOCTL_AGP_INFO, &i))
return 0; return 0;
return i.aperture_base; return i.aperture_base;
@ -1849,6 +1872,8 @@ unsigned long drmAgpSize(int fd)
{ {
drm_agp_info_t i; drm_agp_info_t i;
memclear(i);
if (drmIoctl(fd, DRM_IOCTL_AGP_INFO, &i)) if (drmIoctl(fd, DRM_IOCTL_AGP_INFO, &i))
return 0; return 0;
return i.aperture_size; return i.aperture_size;
@ -1870,6 +1895,8 @@ unsigned long drmAgpMemoryUsed(int fd)
{ {
drm_agp_info_t i; drm_agp_info_t i;
memclear(i);
if (drmIoctl(fd, DRM_IOCTL_AGP_INFO, &i)) if (drmIoctl(fd, DRM_IOCTL_AGP_INFO, &i))
return 0; return 0;
return i.memory_used; return i.memory_used;
@ -1891,6 +1918,8 @@ unsigned long drmAgpMemoryAvail(int fd)
{ {
drm_agp_info_t i; drm_agp_info_t i;
memclear(i);
if (drmIoctl(fd, DRM_IOCTL_AGP_INFO, &i)) if (drmIoctl(fd, DRM_IOCTL_AGP_INFO, &i))
return 0; return 0;
return i.memory_allowed; return i.memory_allowed;
@ -1912,6 +1941,8 @@ unsigned int drmAgpVendorId(int fd)
{ {
drm_agp_info_t i; drm_agp_info_t i;
memclear(i);
if (drmIoctl(fd, DRM_IOCTL_AGP_INFO, &i)) if (drmIoctl(fd, DRM_IOCTL_AGP_INFO, &i))
return 0; return 0;
return i.id_vendor; return i.id_vendor;
@ -1933,6 +1964,8 @@ unsigned int drmAgpDeviceId(int fd)
{ {
drm_agp_info_t i; drm_agp_info_t i;
memclear(i);
if (drmIoctl(fd, DRM_IOCTL_AGP_INFO, &i)) if (drmIoctl(fd, DRM_IOCTL_AGP_INFO, &i))
return 0; return 0;
return i.id_device; return i.id_device;
@ -1942,9 +1975,10 @@ int drmScatterGatherAlloc(int fd, unsigned long size, drm_handle_t *handle)
{ {
drm_scatter_gather_t sg; drm_scatter_gather_t sg;
memclear(sg);
*handle = 0; *handle = 0;
sg.size = size; sg.size = size;
sg.handle = 0;
if (drmIoctl(fd, DRM_IOCTL_SG_ALLOC, &sg)) if (drmIoctl(fd, DRM_IOCTL_SG_ALLOC, &sg))
return -errno; return -errno;
*handle = sg.handle; *handle = sg.handle;
@ -1955,7 +1989,7 @@ int drmScatterGatherFree(int fd, drm_handle_t handle)
{ {
drm_scatter_gather_t sg; drm_scatter_gather_t sg;
sg.size = 0; memclear(sg);
sg.handle = handle; sg.handle = handle;
if (drmIoctl(fd, DRM_IOCTL_SG_FREE, &sg)) if (drmIoctl(fd, DRM_IOCTL_SG_FREE, &sg))
return -errno; return -errno;
@ -2046,6 +2080,7 @@ int drmCtlInstHandler(int fd, int irq)
{ {
drm_control_t ctl; drm_control_t ctl;
memclear(ctl);
ctl.func = DRM_INST_HANDLER; ctl.func = DRM_INST_HANDLER;
ctl.irq = irq; ctl.irq = irq;
if (drmIoctl(fd, DRM_IOCTL_CONTROL, &ctl)) if (drmIoctl(fd, DRM_IOCTL_CONTROL, &ctl))
@ -2069,6 +2104,7 @@ int drmCtlUninstHandler(int fd)
{ {
drm_control_t ctl; drm_control_t ctl;
memclear(ctl);
ctl.func = DRM_UNINST_HANDLER; ctl.func = DRM_UNINST_HANDLER;
ctl.irq = 0; ctl.irq = 0;
if (drmIoctl(fd, DRM_IOCTL_CONTROL, &ctl)) if (drmIoctl(fd, DRM_IOCTL_CONTROL, &ctl))
@ -2080,8 +2116,8 @@ int drmFinish(int fd, int context, drmLockFlags flags)
{ {
drm_lock_t lock; drm_lock_t lock;
memclear(lock);
lock.context = context; lock.context = context;
lock.flags = 0;
if (flags & DRM_LOCK_READY) lock.flags |= _DRM_LOCK_READY; if (flags & DRM_LOCK_READY) lock.flags |= _DRM_LOCK_READY;
if (flags & DRM_LOCK_QUIESCENT) lock.flags |= _DRM_LOCK_QUIESCENT; if (flags & DRM_LOCK_QUIESCENT) lock.flags |= _DRM_LOCK_QUIESCENT;
if (flags & DRM_LOCK_FLUSH) lock.flags |= _DRM_LOCK_FLUSH; if (flags & DRM_LOCK_FLUSH) lock.flags |= _DRM_LOCK_FLUSH;
@ -2111,6 +2147,7 @@ int drmGetInterruptFromBusID(int fd, int busnum, int devnum, int funcnum)
{ {
drm_irq_busid_t p; drm_irq_busid_t p;
memclear(p);
p.busnum = busnum; p.busnum = busnum;
p.devnum = devnum; p.devnum = devnum;
p.funcnum = funcnum; p.funcnum = funcnum;
@ -2153,6 +2190,7 @@ int drmAddContextPrivateMapping(int fd, drm_context_t ctx_id,
{ {
drm_ctx_priv_map_t map; drm_ctx_priv_map_t map;
memclear(map);
map.ctx_id = ctx_id; map.ctx_id = ctx_id;
map.handle = (void *)(uintptr_t)handle; map.handle = (void *)(uintptr_t)handle;
@ -2166,6 +2204,7 @@ int drmGetContextPrivateMapping(int fd, drm_context_t ctx_id,
{ {
drm_ctx_priv_map_t map; drm_ctx_priv_map_t map;
memclear(map);
map.ctx_id = ctx_id; map.ctx_id = ctx_id;
if (drmIoctl(fd, DRM_IOCTL_GET_SAREA_CTX, &map)) if (drmIoctl(fd, DRM_IOCTL_GET_SAREA_CTX, &map))
@ -2182,6 +2221,7 @@ int drmGetMap(int fd, int idx, drm_handle_t *offset, drmSize *size,
{ {
drm_map_t map; drm_map_t map;
memclear(map);
map.offset = idx; map.offset = idx;
if (drmIoctl(fd, DRM_IOCTL_GET_MAP, &map)) if (drmIoctl(fd, DRM_IOCTL_GET_MAP, &map))
return -errno; return -errno;
@ -2199,6 +2239,7 @@ int drmGetClient(int fd, int idx, int *auth, int *pid, int *uid,
{ {
drm_client_t client; drm_client_t client;
memclear(client);
client.idx = idx; client.idx = idx;
if (drmIoctl(fd, DRM_IOCTL_GET_CLIENT, &client)) if (drmIoctl(fd, DRM_IOCTL_GET_CLIENT, &client))
return -errno; return -errno;
@ -2215,6 +2256,7 @@ int drmGetStats(int fd, drmStatsT *stats)
drm_stats_t s; drm_stats_t s;
unsigned i; unsigned i;
memclear(s);
if (drmIoctl(fd, DRM_IOCTL_GET_STATS, &s)) if (drmIoctl(fd, DRM_IOCTL_GET_STATS, &s))
return -errno; return -errno;
@ -2352,6 +2394,7 @@ int drmSetInterfaceVersion(int fd, drmSetVersion *version)
int retcode = 0; int retcode = 0;
drm_set_version_t sv; drm_set_version_t sv;
memclear(sv);
sv.drm_di_major = version->drm_di_major; sv.drm_di_major = version->drm_di_major;
sv.drm_di_minor = version->drm_di_minor; sv.drm_di_minor = version->drm_di_minor;
sv.drm_dd_major = version->drm_dd_major; sv.drm_dd_major = version->drm_dd_major;
@ -2383,12 +2426,11 @@ int drmSetInterfaceVersion(int fd, drmSetVersion *version)
*/ */
int drmCommandNone(int fd, unsigned long drmCommandIndex) int drmCommandNone(int fd, unsigned long drmCommandIndex)
{ {
void *data = NULL; /* dummy */
unsigned long request; unsigned long request;
request = DRM_IO( DRM_COMMAND_BASE + drmCommandIndex); request = DRM_IO( DRM_COMMAND_BASE + drmCommandIndex);
if (drmIoctl(fd, request, data)) { if (drmIoctl(fd, request, NULL)) {
return -errno; return -errno;
} }
return 0; return 0;
@ -2543,12 +2585,12 @@ void drmCloseOnce(int fd)
int drmSetMaster(int fd) int drmSetMaster(int fd)
{ {
return drmIoctl(fd, DRM_IOCTL_SET_MASTER, 0); return drmIoctl(fd, DRM_IOCTL_SET_MASTER, NULL);
} }
int drmDropMaster(int fd) int drmDropMaster(int fd)
{ {
return drmIoctl(fd, DRM_IOCTL_DROP_MASTER, 0); return drmIoctl(fd, DRM_IOCTL_DROP_MASTER, NULL);
} }
char *drmGetDeviceNameFromFd(int fd) char *drmGetDeviceNameFromFd(int fd)