summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Michael <cpmichael@osg.samsung.com>2016-04-26 11:00:40 -0400
committerChris Michael <cpmichael@osg.samsung.com>2016-04-26 11:00:40 -0400
commit7d450fba64f52d6bac2f236273cc0b8203ef5ac5 (patch)
tree69f185557558eefd7fbe7085e4350efe52273227
parent6c032a99de24b7a7b796aa20f67936ab0d4e6844 (diff)
ecore-drm: Add missing initializer for fb2 command
drm_mode_fb_cmd2 has fields for a modifier to handle tiling, compression, etc (per plane). Even tho we do not use these, we should at least initialize them to zero else we end up with uninitialized bytes in the cmd structure. ==11706== Syscall param ioctl(generic) points to uninitialised byte(s) ==11706== at 0x57E05D9: ioctl (in /usr/lib/libc-2.20.so) ==11706== by 0x4D30FA3: drmIoctl (in /usr/lib/libdrm.so.2.4.0) ==11706== by 0x4CDF66B: _ecore_drm_fb_create2 (ecore_drm_fb.c:63) @fix Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
-rw-r--r--src/lib/ecore_drm/ecore_drm_fb.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/lib/ecore_drm/ecore_drm_fb.c b/src/lib/ecore_drm/ecore_drm_fb.c
index f705fa2..7f3d323 100644
--- a/src/lib/ecore_drm/ecore_drm_fb.c
+++ b/src/lib/ecore_drm/ecore_drm_fb.c
@@ -40,6 +40,7 @@ _ecore_drm_fb_create2(int fd, Ecore_Drm_Fb *fb)
40{ 40{
41 struct drm_mode_fb_cmd2 cmd; 41 struct drm_mode_fb_cmd2 cmd;
42 uint32_t hdls[4], pitches[4], offsets[4], fmt; 42 uint32_t hdls[4], pitches[4], offsets[4], fmt;
43 uint64_t modifiers[4];
43 44
44#define _fourcc_code(a,b,c,d) \ 45#define _fourcc_code(a,b,c,d) \
45 ((uint32_t)(a) | ((uint32_t)(b) << 8) | \ 46 ((uint32_t)(a) | ((uint32_t)(b) << 8) | \
@@ -49,6 +50,7 @@ _ecore_drm_fb_create2(int fd, Ecore_Drm_Fb *fb)
49 hdls[0] = fb->hdl; 50 hdls[0] = fb->hdl;
50 pitches[0] = fb->stride; 51 pitches[0] = fb->stride;
51 offsets[0] = 0; 52 offsets[0] = 0;
53 modifiers[0] = 0;
52 54
53 memset(&cmd, 0, sizeof(struct drm_mode_fb_cmd2)); 55 memset(&cmd, 0, sizeof(struct drm_mode_fb_cmd2));
54 cmd.fb_id = 0; 56 cmd.fb_id = 0;
@@ -59,6 +61,7 @@ _ecore_drm_fb_create2(int fd, Ecore_Drm_Fb *fb)
59 memcpy(cmd.handles, hdls, 4 * sizeof(hdls[0])); 61 memcpy(cmd.handles, hdls, 4 * sizeof(hdls[0]));
60 memcpy(cmd.pitches, pitches, 4 * sizeof(pitches[0])); 62 memcpy(cmd.pitches, pitches, 4 * sizeof(pitches[0]));
61 memcpy(cmd.offsets, offsets, 4 * sizeof(offsets[0])); 63 memcpy(cmd.offsets, offsets, 4 * sizeof(offsets[0]));
64 memcpy(cmd.modifier, modifiers, 4 * sizeof(modifiers[0]));
62 65
63 if (drmIoctl(fd, DRM_IOCTL_MODE_ADDFB2, &cmd)) 66 if (drmIoctl(fd, DRM_IOCTL_MODE_ADDFB2, &cmd))
64 return EINA_FALSE; 67 return EINA_FALSE;