Re: [PATCH 3/7] vivid: use vzalloc for dev->bitmap_out

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Hans,

Thank you for the patch.

On Thu, Feb 21, 2019 at 03:21:44PM +0100, Hans Verkuil wrote:
> When vivid is unloaded it used vfree to free dev->bitmap_out,
> but it was actually allocated using kmalloc. Use vzalloc
> instead, conform what vivid-vid-cap.c does.
> 
> Signed-off-by: Hans Verkuil <hverkuil-cisco@xxxxxxxxx>

Reviewed-by: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx>

> ---
>  drivers/media/platform/vivid/vivid-vid-out.c | 14 +++++++++-----
>  1 file changed, 9 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/media/platform/vivid/vivid-vid-out.c b/drivers/media/platform/vivid/vivid-vid-out.c
> index e61b91b414f9..9350ca65dd91 100644
> --- a/drivers/media/platform/vivid/vivid-vid-out.c
> +++ b/drivers/media/platform/vivid/vivid-vid-out.c
> @@ -798,7 +798,7 @@ int vivid_vid_out_s_selection(struct file *file, void *fh, struct v4l2_selection
>  		s->r.height *= factor;
>  		if (dev->bitmap_out && (compose->width != s->r.width ||
>  					compose->height != s->r.height)) {
> -			kfree(dev->bitmap_out);
> +			vfree(dev->bitmap_out);
>  			dev->bitmap_out = NULL;
>  		}
>  		*compose = s->r;
> @@ -941,15 +941,19 @@ int vidioc_s_fmt_vid_out_overlay(struct file *file, void *priv,
>  		return ret;
>  
>  	if (win->bitmap) {
> -		new_bitmap = memdup_user(win->bitmap, bitmap_size);
> +		new_bitmap = vzalloc(bitmap_size);
>  
> -		if (IS_ERR(new_bitmap))
> -			return PTR_ERR(new_bitmap);
> +		if (!new_bitmap)
> +			return -ENOMEM;
> +		if (copy_from_user(new_bitmap, win->bitmap, bitmap_size)) {
> +			vfree(new_bitmap);
> +			return -EFAULT;
> +		}
>  	}
>  
>  	dev->overlay_out_top = win->w.top;
>  	dev->overlay_out_left = win->w.left;
> -	kfree(dev->bitmap_out);
> +	vfree(dev->bitmap_out);
>  	dev->bitmap_out = new_bitmap;
>  	dev->clipcount_out = win->clipcount;
>  	if (dev->clipcount_out)

-- 
Regards,

Laurent Pinchart



[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux