mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-14 06:24:53 +08:00
e2fc6edd37
Commit707947247e
("media: videobuf2-vmalloc: get_userptr: buffers are always writable") caused problems in a corner case (passing read-only shmem memory as a userptr). So revert this patch. The original problem for which that commit was originally made is something that I could not reproduce after reverting it. So just go back to the way it was for many years, and if problems arise in the future, then another approach should be taken to resolve it. This patch is based on a patch from Hirokazu. Fixes:707947247e
("media: videobuf2-vmalloc: get_userptr: buffers are always writable") Signed-off-by: Hirokazu Honda <hiroh@chromium.org> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Acked-by: Tomasz Figa <tfiga@chromium.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
42 lines
1.1 KiB
C
42 lines
1.1 KiB
C
/*
|
|
* videobuf2-memops.h - generic memory handling routines for videobuf2
|
|
*
|
|
* Copyright (C) 2010 Samsung Electronics
|
|
*
|
|
* Author: Pawel Osciak <pawel@osciak.com>
|
|
* Marek Szyprowski <m.szyprowski@samsung.com>
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation.
|
|
*/
|
|
|
|
#ifndef _MEDIA_VIDEOBUF2_MEMOPS_H
|
|
#define _MEDIA_VIDEOBUF2_MEMOPS_H
|
|
|
|
#include <media/videobuf2-v4l2.h>
|
|
#include <linux/mm.h>
|
|
#include <linux/refcount.h>
|
|
|
|
/**
|
|
* struct vb2_vmarea_handler - common vma refcount tracking handler.
|
|
*
|
|
* @refcount: pointer to &refcount_t entry in the buffer.
|
|
* @put: callback to function that decreases buffer refcount.
|
|
* @arg: argument for @put callback.
|
|
*/
|
|
struct vb2_vmarea_handler {
|
|
refcount_t *refcount;
|
|
void (*put)(void *arg);
|
|
void *arg;
|
|
};
|
|
|
|
extern const struct vm_operations_struct vb2_common_vm_ops;
|
|
|
|
struct frame_vector *vb2_create_framevec(unsigned long start,
|
|
unsigned long length,
|
|
bool write);
|
|
void vb2_destroy_framevec(struct frame_vector *vec);
|
|
|
|
#endif
|