Browse Source

drm/msm: bit of fb error checking

It's a problem that can't happen yet, since we don't support any
multi-planar formats yet.  But let's avoid nasty surprises when the
time comes.

Signed-off-by: Rob Clark <robdclark@gmail.com>
Rob Clark 10 years ago
parent
commit
10291bff0a
1 changed files with 6 additions and 1 deletions
  1. 6 1
      drivers/gpu/drm/msm/msm_fb.c

+ 6 - 1
drivers/gpu/drm/msm/msm_fb.c

@@ -24,7 +24,7 @@
 struct msm_framebuffer {
 struct msm_framebuffer {
 	struct drm_framebuffer base;
 	struct drm_framebuffer base;
 	const struct msm_format *format;
 	const struct msm_format *format;
-	struct drm_gem_object *planes[2];
+	struct drm_gem_object *planes[3];
 };
 };
 #define to_msm_framebuffer(x) container_of(x, struct msm_framebuffer, base)
 #define to_msm_framebuffer(x) container_of(x, struct msm_framebuffer, base)
 
 
@@ -202,6 +202,11 @@ struct drm_framebuffer *msm_framebuffer_init(struct drm_device *dev,
 
 
 	msm_fb->format = format;
 	msm_fb->format = format;
 
 
+	if (n > ARRAY_SIZE(msm_fb->planes)) {
+		ret = -EINVAL;
+		goto fail;
+	}
+
 	for (i = 0; i < n; i++) {
 	for (i = 0; i < n; i++) {
 		unsigned int width = mode_cmd->width / (i ? hsub : 1);
 		unsigned int width = mode_cmd->width / (i ? hsub : 1);
 		unsigned int height = mode_cmd->height / (i ? vsub : 1);
 		unsigned int height = mode_cmd->height / (i ? vsub : 1);