[PATCH 4/4] drm: Renesas SH Mobile DRM driver

Laurent Pinchart laurent.pinchart at ideasonboard.com
Wed Jun 27 05:40:37 PDT 2012


Hi Ville,

Thank you for the review.

On Wednesday 30 May 2012 17:16:46 Ville Syrjälä wrote:
> On Wed, May 30, 2012 at 02:32:59PM +0200, Laurent Pinchart wrote:
> > +static struct drm_framebuffer *
> > +shmob_drm_fb_create(struct drm_device *dev, struct drm_file *file_priv,
> > +		    struct drm_mode_fb_cmd2 *mode_cmd)
> > +{
> > +	const struct shmob_drm_format_info *format;
> > +	struct shmob_drm_framebuffer *sfb;
> > +	struct drm_framebuffer *fb;
> > +	struct drm_gem_object *obj;
> > +	unsigned int i;
> > +	int ret;
> > +
> > +	format = shmob_drm_format_info(mode_cmd->pixel_format);
> > +	if (format == NULL) {
> > +		dev_dbg(dev->dev, "unsupported pixel format %08x\n",
> > +			mode_cmd->pixel_format);
> > +		return ERR_PTR(-EINVAL);
> > +	}
> > +
> > +	sfb = kzalloc(sizeof(*fb), GFP_KERNEL);
> > +	if (sfb == NULL)
> > +		return ERR_PTR(-ENOMEM);
> > +
> > +	sfb->format = format;
> > +	fb = &sfb->base;
> > +
> > +	for (i = 0; i < (format->yuv ? 2 : 1); ++i) {
> > +		obj = drm_gem_object_lookup(dev, file_priv,
> > +					    mode_cmd->handles[i]);
> > +		if (obj == NULL) {
> > +			dev_dbg(dev->dev, "GEM object %u not found\n",
> > +				mode_cmd->handles[i]);
> > +			ret = -ENOENT;
> > +			goto error;
> > +		}
> > +		sfb->sobj[i] = to_shmob_gem_object(obj);
> > +	}
> 
> offsets[] not checked, nor is it handled in the code that calculates the
> final offsets.
> 
> Based on the rest of the code, it seems that the hardware assumes
> pitches[1] == pitches[0]*chroma_cpp. You should reject other values here.
> Also it's not clear from the code if there are other stride limitations that
> would need checking.
> 
> Also there are no checks to make sure the fb fits inside the gem object. At
> one point I tried to cook up a generic function to help with such checks. I
> probably need to revisit that issue and try to make something that'd work
> for tiled formats as well.

You're right. I now use the generic drm_fb_cma_create() function from Lars-
Peter "DRM: Add DRM kms/fb cma helper" patch, so the above code is gone. I'll 
make sure your comments get addressed in the patch.

-- 
Regards,

Laurent Pinchart



More information about the dri-devel mailing list