• I
    Staging: TIDSPBRIDGE: Use vm_iomap_memory for mmap-ing instead of remap_pfn_range · 559c71fe
    Ivaylo Dimitrov 提交于
    This fixes the following bug:
    
    ----  Bug Report ----
    
    source file: drivers/staging/tidspbridge/rmgr/drv_interface.c
    issue      : mapping of physical memory without address range checks
    
    259 static int bridge_mmap(struct file *filp, struct vm_area_struct *vma)
    260 {
    261         u32 status;
    262
    263         /* VM_IO | VM_DONTEXPAND | VM_DONTDUMP are set by remap_pfn_range() */
    264         vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
    265
    266         dev_dbg(bridge, "%s: vm filp %p start %lx end %lx page_prot %ulx "
    267                 "flags %lx\n", __func__, filp,
    268                 vma->vm_start, vma->vm_end, vma->vm_page_prot,
    269                 vma->vm_flags);
    270
    271         status = remap_pfn_range(vma, vma->vm_start, vma->vm_pgoff,
    272                                  vma->vm_end - vma->vm_start,
    273                                  vma->vm_page_prot);
    274         if (status != 0)
    275                 status = -EAGAIN;
    276
    277         return status;
    278 }
    
    The function provides an interface to remap physical memory to user space, but
    does not provide any checks to ensure that the memory is within the region that
    should be accessible.
    Reported-by: NNico Golde <nico@ngolde.de>
    Reported-by: NFabian Yamaguchi <fabs@goesec.de>
    Signed-off-by: NIvaylo Dimitrov <freemangordon@abv.bg>
    Signed-off-by: NPavel Machek <pavel@ucw.cz>
    Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    559c71fe
drv_interface.c 14.4 KB