Re: [PATCH] [media] v4l: vb2-memops: use vma slab when vma allocation

From: Hans Verkuil
Date: Wed Apr 08 2015 - 12:01:19 EST


Mauro,

Please revert this patch: vm_area_cachep is not exported, so you cannot use this
in a module.

Cho KyongHo, if you believe that vm_area_cachep should be exported so it can be
used here, then please make a patch for that.

For the time being though, this patch should be reverted.

This patch slipped through the cracks and I clearly never reviewed it, and I only
noticed the problem after I compiled the media_tree git repo after this patch
was merged.

Regards,

Hans

On 02/05/2015 06:52 AM, Cho KyongHo wrote:
> The slab for vm_area_struct which is vm_area_cachep is already prepared
> for the general use. Instead of kmalloc() for the vma copy for userptr,
> allocation from vm_area_cachep is more beneficial.
>
> CC: Mauro Carvalho Chehab <mchehab@xxxxxxxxxxxxxxx>
> CC: Hans Verkuil <hans.verkuil@xxxxxxxxx>
> CC: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx>
> Signed-off-by: Cho KyongHo <pullip.cho@xxxxxxxxxxx>
> ---
> drivers/media/v4l2-core/videobuf2-memops.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/media/v4l2-core/videobuf2-memops.c b/drivers/media/v4l2-core/videobuf2-memops.c
> index 81c1ad8..dd06efa 100644
> --- a/drivers/media/v4l2-core/videobuf2-memops.c
> +++ b/drivers/media/v4l2-core/videobuf2-memops.c
> @@ -37,7 +37,7 @@ struct vm_area_struct *vb2_get_vma(struct vm_area_struct *vma)
> {
> struct vm_area_struct *vma_copy;
>
> - vma_copy = kmalloc(sizeof(*vma_copy), GFP_KERNEL);
> + vma_copy = kmem_cache_alloc(vm_area_cachep, GFP_KERNEL);
> if (vma_copy == NULL)
> return NULL;
>
> @@ -75,7 +75,7 @@ void vb2_put_vma(struct vm_area_struct *vma)
> if (vma->vm_file)
> fput(vma->vm_file);
>
> - kfree(vma);
> + kmem_cache_free(vm_area_cachep, vma);
> }
> EXPORT_SYMBOL_GPL(vb2_put_vma);
>
>

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/