• Ruihan Li's avatar
    usb: usbfs: Use consistent mmap functions · d0b86165
    Ruihan Li authored
    When hcd->localmem_pool is non-null, localmem_pool is used to allocate
    DMA memory. In this case, the dma address will be properly returned (in
    dma_handle), and dma_mmap_coherent should be used to map this memory
    into the user space. However, the current implementation uses
    pfn_remap_range, which is supposed to map normal pages.
    
    Instead of repeating the logic in the memory allocation function, this
    patch introduces a more robust solution. Here, the type of allocated
    memory is checked by testing whether dma_handle is properly set. If
    dma_handle is properly returned, it means some DMA pages are allocated
    and dma_mmap_coherent should be used to map them. Otherwise, normal
    pages are allocated and pfn_remap_range should be called. This ensures
    that the correct mmap functions are used consistently, independently
    with logic details that determine which type of memory gets allocated.
    
    Fixes: a0e710a7 ("USB: usbfs: fix mmap dma mismatch")
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarRuihan Li <lrh2000@pku.edu.cn>
    Link: https://lore.kernel.org/r/20230515130958.32471-3-lrh2000@pku.edu.cnSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    d0b86165
devio.c 71.1 KB