Fix a reference count leak in the LinuxKPI due to calling VM open when
it shouldn't be called. Background: The Linux VM open operation is called when a new VMA is created on top of the current VMA. This is done through either mremap flow or split_vma, usually due to mlock, madvise, munmap and so on. This is currently not supported by the LinuxKPI. MFC after: 1 week Sponsored by: Mellanox Technologies
This commit is contained in:
parent
f5a9867b7d
commit
ea67550be0
@ -547,20 +547,9 @@ static int
|
|||||||
linux_cdev_pager_ctor(void *handle, vm_ooffset_t size, vm_prot_t prot,
|
linux_cdev_pager_ctor(void *handle, vm_ooffset_t size, vm_prot_t prot,
|
||||||
vm_ooffset_t foff, struct ucred *cred, u_short *color)
|
vm_ooffset_t foff, struct ucred *cred, u_short *color)
|
||||||
{
|
{
|
||||||
const struct vm_operations_struct *vm_ops;
|
|
||||||
struct vm_area_struct *vmap;
|
|
||||||
|
|
||||||
vmap = linux_cdev_handle_find(handle);
|
|
||||||
MPASS(vmap != NULL);
|
|
||||||
|
|
||||||
|
MPASS(linux_cdev_handle_find(handle) != NULL);
|
||||||
*color = 0;
|
*color = 0;
|
||||||
|
|
||||||
down_write(&vmap->vm_mm->mmap_sem);
|
|
||||||
vm_ops = vmap->vm_ops;
|
|
||||||
if (likely(vm_ops != NULL))
|
|
||||||
vm_ops->open(vmap);
|
|
||||||
up_write(&vmap->vm_mm->mmap_sem);
|
|
||||||
|
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user