diff options
author | Eric Anholt <eric@anholt.net> | 2013-12-28 22:06:51 -0800 |
---|---|---|
committer | Kenneth Graunke <kenneth@whitecape.org> | 2014-01-20 10:58:06 -0800 |
commit | 734de7093db296912da0027e4fa1094f60787c11 (patch) | |
tree | 81548f2353d24b0a90cd5da7f4dedcfbc7d2be08 /xf86drmMode.c | |
parent | cb4bc8ead63cb213a26bcc8d14b2b44d9fb967da (diff) |
drm: Initialize or valgrind-clear modesetting ioctl arguments.
Fixes valgrind complaints in the modesetting driver. I tried to
follow each ioctl's pattern for whether it was initializing just the
in values, or both in and out values.
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Diffstat (limited to 'xf86drmMode.c')
-rw-r--r-- | xf86drmMode.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/xf86drmMode.c b/xf86drmMode.c index 6b60c35e..dd7966ef 100644 --- a/xf86drmMode.c +++ b/xf86drmMode.c @@ -41,6 +41,10 @@ #include <sys/ioctl.h> #include <stdio.h> +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include "xf86drmMode.h" #include "xf86drm.h" #include <drm.h> @@ -49,6 +53,16 @@ #include <unistd.h> #include <errno.h> +#ifdef HAVE_VALGRIND +#include <valgrind.h> +#include <memcheck.h> +#define VG(x) x +#else +#define VG(x) +#endif + +#define VG_CLEAR(s) VG(memset(&s, 0, sizeof(s))) + #define U642VOID(x) ((void *)(unsigned long)(x)) #define VOID2U64(x) ((uint64_t)(unsigned long)(x)) @@ -245,6 +259,7 @@ int drmModeAddFB(int fd, uint32_t width, uint32_t height, uint8_t depth, struct drm_mode_fb_cmd f; int ret; + VG_CLEAR(f); f.width = width; f.height = height; f.pitch = pitch; @@ -335,6 +350,7 @@ drmModeCrtcPtr drmModeGetCrtc(int fd, uint32_t crtcId) struct drm_mode_crtc crtc; drmModeCrtcPtr r; + VG_CLEAR(crtc); crtc.crtc_id = crtcId; if (drmIoctl(fd, DRM_IOCTL_MODE_GETCRTC, &crtc)) @@ -368,6 +384,7 @@ int drmModeSetCrtc(int fd, uint32_t crtcId, uint32_t bufferId, { struct drm_mode_crtc crtc; + VG_CLEAR(crtc); crtc.x = x; crtc.y = y; crtc.crtc_id = crtcId; @@ -436,6 +453,7 @@ drmModeEncoderPtr drmModeGetEncoder(int fd, uint32_t encoder_id) drmModeEncoderPtr r = NULL; enc.encoder_id = encoder_id; + enc.crtc_id = 0; enc.encoder_type = 0; enc.possible_crtcs = 0; enc.possible_clones = 0; @@ -580,6 +598,7 @@ drmModePropertyPtr drmModeGetProperty(int fd, uint32_t property_id) struct drm_mode_get_property prop; drmModePropertyPtr r; + VG_CLEAR(prop); prop.prop_id = property_id; prop.count_enum_blobs = 0; prop.count_values = 0; |