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-05-03 08:19:46 -0400
commit14239cac0e80cafeb26bf6678efcde211ac431cf (patch)
treea7c81c0dac5a730f71d5fc3b605367b950c431ea
parent17e3e665c524ee732d999ca7fd35ac8c97aa77dd (diff)
ecore-drm: Add missing initializer for fb2 commanddevs/devilhorns/stable-test
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 234b06f17c..b5e64b8a6a 100644
--- a/src/lib/ecore_drm/ecore_drm_fb.c
+++ b/src/lib/ecore_drm/ecore_drm_fb.c
@@ -16,6 +16,7 @@ _ecore_drm_fb_create2(int fd, Ecore_Drm_Fb *fb)
16{ 16{
17 struct drm_mode_fb_cmd2 cmd; 17 struct drm_mode_fb_cmd2 cmd;
18 uint32_t hdls[4], pitches[4], offsets[4], fmt; 18 uint32_t hdls[4], pitches[4], offsets[4], fmt;
19 uint64_t modifiers[4];
19 20
20#define _fourcc_code(a,b,c,d) \ 21#define _fourcc_code(a,b,c,d) \
21 ((uint32_t)(a) | ((uint32_t)(b) << 8) | \ 22 ((uint32_t)(a) | ((uint32_t)(b) << 8) | \
@@ -25,6 +26,7 @@ _ecore_drm_fb_create2(int fd, Ecore_Drm_Fb *fb)
25 hdls[0] = fb->hdl; 26 hdls[0] = fb->hdl;
26 pitches[0] = fb->stride; 27 pitches[0] = fb->stride;
27 offsets[0] = 0; 28 offsets[0] = 0;
29 modifiers[0] = 0;
28 30
29 memset(&cmd, 0, sizeof(struct drm_mode_fb_cmd2)); 31 memset(&cmd, 0, sizeof(struct drm_mode_fb_cmd2));
30 cmd.fb_id = 0; 32 cmd.fb_id = 0;
@@ -35,6 +37,7 @@ _ecore_drm_fb_create2(int fd, Ecore_Drm_Fb *fb)
35 memcpy(cmd.handles, hdls, 4 * sizeof(hdls[0])); 37 memcpy(cmd.handles, hdls, 4 * sizeof(hdls[0]));
36 memcpy(cmd.pitches, pitches, 4 * sizeof(pitches[0])); 38 memcpy(cmd.pitches, pitches, 4 * sizeof(pitches[0]));
37 memcpy(cmd.offsets, offsets, 4 * sizeof(offsets[0])); 39 memcpy(cmd.offsets, offsets, 4 * sizeof(offsets[0]));
40 memcpy(cmd.modifier, modifiers, 4 * sizeof(modifiers[0]));
38 41
39 if (drmIoctl(fd, DRM_IOCTL_MODE_ADDFB2, &cmd)) 42 if (drmIoctl(fd, DRM_IOCTL_MODE_ADDFB2, &cmd))
40 return EINA_FALSE; 43 return EINA_FALSE;