On 10/31/26 02:44, T.J. Mercier wrote:
> On Fri, Oct 30, 2026 at 1:44 PM Chris Wiseman <[email protected]> wrote:
>>
>> When commit 381295758792 ("dma-buf: system_heap: Rework system heap to
>> use sgtables instead of pagelists") stopped using heap_helpers.c and
>> added a custom system_heap_mmap(), the check rejecting private mappings
>> was dropped.
>>
>> Other exporters and buffer allocators reject private or copy-on-write
>> mappings in their mmap handlers: cma_heap_mmap() and mmap_udmabuf()
>> check that VM_SHARED or VM_MAYSHARE is set, and drm_gem_shmem_mmap()
>> and ttm_bo_mmap_obj() reject vma_is_cow_mapping(vma).
>>
>> However, system_heap_mmap() omits this check and calls remap_pfn_range()
>> even when userspace requests MAP_PRIVATE with PROT_WRITE. As a result,
>> subsequent CPU writes to a MAP_PRIVATE mapping of a system heap buffer
>> fault into do_wp_page() -> wp_page_copy(), silently allocating private
>> anonymous copy-on-write pages whose writes never reach the underlying
>> system heap buffer pages.
>>
>> Reject non-shared mappings in system_heap_mmap() with -EINVAL to match
>> cma_heap_mmap() and mmap_udmabuf().
>>
>> Fixes: 381295758792 ("dma-buf: system_heap: Rework system heap to use 
>> sgtables instead of pagelists")
>> Cc: [email protected]
>> Signed-off-by: Chris Wiseman <[email protected]>
> 
> Reviewed-by: T.J. Mercier <[email protected]>
> 
> I wonder if we should have this in dma_buf_mmap_internal() though. Any
> thoughts Sumit or Christian?

I do remember that this was once already discussed with Simona and a couple of 
others, but I don't remember what the outcome was.

On the other hand I can't think of a reason why anybody would want a private 
mapping with DMA-buf copy on write clearly won't work. Maybe for backward 
compatibility with broken userspace, not for a real use case.

I would say let's push this patch to drm-misc-fixes and apply another patch to 
drm-misc-next to enforce this for all DMA-bufs and see if anybody complains 
that this breaks userspace.

Should I push it to drm-misc-fixes or want somebody else take that?

Regards,
Christian.

Reply via email to