diff options
author | Chris Michael <cpmichael@osg.samsung.com> | 2016-04-26 11:00:40 -0400 |
---|---|---|
committer | Chris Michael <cpmichael@osg.samsung.com> | 2016-04-26 11:00:40 -0400 |
commit | 7d450fba64f52d6bac2f236273cc0b8203ef5ac5 (patch) | |
tree | 69f185557558eefd7fbe7085e4350efe52273227 /src | |
parent | 6c032a99de24b7a7b796aa20f67936ab0d4e6844 (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>
Diffstat (limited to '')
-rw-r--r-- | src/lib/ecore_drm/ecore_drm_fb.c | 3 |
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 f705fa2483..7f3d32360e 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; |