]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
media/videobuf1|2: Mark follow_pfn usage as unsafe
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Tue, 16 Mar 2021 15:33:02 +0000 (16:33 +0100)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Thu, 8 Apr 2021 14:54:38 +0000 (16:54 +0200)
The media model assumes that buffers are all preallocated, so that
when a media pipeline is running we never miss a deadline because the
buffers aren't allocated or available.

This means we cannot fix the v4l follow_pfn usage through
mmu_notifier, without breaking how this all works. The only real fix
is to deprecate userptr support for VM_IO | VM_PFNMAP mappings and
tell everyone to cut over to dma-buf memory sharing for zerocopy.

userptr for normal memory will keep working as-is, this only affects
the zerocopy userptr usage enabled in 50ac952d2263 ("[media]
videobuf2-dma-sg: Support io userptr operations on io memory").

Acked-by: Tomasz Figa <tfiga@chromium.org>
Acked-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Cc: Jason Gunthorpe <jgg@ziepe.ca>
Cc: Kees Cook <keescook@chromium.org>
Cc: Dan Williams <dan.j.williams@intel.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: John Hubbard <jhubbard@nvidia.com>
Cc: Jérôme Glisse <jglisse@redhat.com>
Cc: Jan Kara <jack@suse.cz>
Cc: Dan Williams <dan.j.williams@intel.com>
Cc: linux-mm@kvack.org
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-samsung-soc@vger.kernel.org
Cc: linux-media@vger.kernel.org
Cc: Pawel Osciak <pawel@osciak.com>
Cc: Marek Szyprowski <m.szyprowski@samsung.com>
Cc: Kyungmin Park <kyungmin.park@samsung.com>
Cc: Tomasz Figa <tfiga@chromium.org>
Cc: Laurent Dufour <ldufour@linux.ibm.com>
Cc: Vlastimil Babka <vbabka@suse.cz>
Cc: Daniel Jordan <daniel.m.jordan@oracle.com>
Cc: Michel Lespinasse <walken@google.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: https://patchwork.freedesktop.org/patch/msgid/20210316153303.3216674-3-daniel.vetter@ffwll.ch
drivers/media/common/videobuf2/frame_vector.c
drivers/media/v4l2-core/videobuf-dma-contig.c

index a0e65481a201c6e2c374c63b2cf552116a45f3fd..1a82ec13ea00ddb1aa9b30badcf82b4d670b3c1f 100644 (file)
@@ -70,7 +70,7 @@ int get_vaddr_frames(unsigned long start, unsigned int nr_frames,
                        break;
 
                while (ret < nr_frames && start + PAGE_SIZE <= vma->vm_end) {
-                       err = follow_pfn(vma, start, &nums[ret]);
+                       err = unsafe_follow_pfn(vma, start, &nums[ret]);
                        if (err) {
                                if (ret == 0)
                                        ret = err;
index 52312ce2ba0562b24fe4a90307a3d9110c34f6e8..821c4a76ab9645bd2a2701e176737b0e18ea55c7 100644 (file)
@@ -183,7 +183,7 @@ static int videobuf_dma_contig_user_get(struct videobuf_dma_contig_memory *mem,
        user_address = untagged_baddr;
 
        while (pages_done < (mem->size >> PAGE_SHIFT)) {
-               ret = follow_pfn(vma, user_address, &this_pfn);
+               ret = unsafe_follow_pfn(vma, user_address, &this_pfn);
                if (ret)
                        break;