mirror of
https://github.com/opnsense/src.git
synced 2026-06-09 00:32:25 -04:00
Drop support for using mmap() with /dev/kmem.
Using the device pager with /dev/kmem is not stable since KVA mappings are transient, but the device pager caches the PA associated with a given offset forever. Interestingly, mips' implementation of memmap() already refused requests for /dev/kmem. Note that kvm_read/kvm_write do not use mmap, but use read and write on /dev/kmem, so this should not affect libkvm users. Reviewed by: kib MFC after: 2 months
This commit is contained in:
parent
65de32210c
commit
31dc1e9681
5 changed files with 15 additions and 21 deletions
|
|
@ -172,10 +172,9 @@ memmmap(struct cdev *dev, vm_ooffset_t offset, vm_paddr_t *paddr,
|
|||
if (offset >= (1ULL << cpu_maxphyaddr))
|
||||
return (-1);
|
||||
*paddr = offset;
|
||||
} else if (dev2unit(dev) == CDEV_MINOR_KMEM)
|
||||
*paddr = vtophys(offset);
|
||||
/* else panic! */
|
||||
return (0);
|
||||
return (0);
|
||||
}
|
||||
return (-1);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -161,10 +161,9 @@ int
|
|||
memmmap(struct cdev *dev, vm_ooffset_t offset, vm_paddr_t *paddr,
|
||||
int prot __unused, vm_memattr_t *memattr __unused)
|
||||
{
|
||||
if (dev2unit(dev) == CDEV_MINOR_MEM)
|
||||
if (dev2unit(dev) == CDEV_MINOR_MEM) {
|
||||
*paddr = offset;
|
||||
else if (dev2unit(dev) == CDEV_MINOR_KMEM)
|
||||
*paddr = vtophys(offset);
|
||||
/* else panic! */
|
||||
return (0);
|
||||
return (0);
|
||||
}
|
||||
return (-1);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -123,10 +123,9 @@ int
|
|||
memmmap(struct cdev *dev, vm_ooffset_t offset, vm_paddr_t *paddr,
|
||||
int prot __unused, vm_memattr_t *memattr __unused)
|
||||
{
|
||||
if (dev2unit(dev) == CDEV_MINOR_MEM)
|
||||
if (dev2unit(dev) == CDEV_MINOR_MEM) {
|
||||
*paddr = offset;
|
||||
else if (dev2unit(dev) == CDEV_MINOR_KMEM)
|
||||
*paddr = vtophys(offset);
|
||||
/* else panic! */
|
||||
return (0);
|
||||
return (0);
|
||||
}
|
||||
return (-1);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -161,12 +161,11 @@ int
|
|||
memmmap(struct cdev *dev, vm_ooffset_t offset, vm_paddr_t *paddr,
|
||||
int prot __unused, vm_memattr_t *memattr __unused)
|
||||
{
|
||||
if (dev2unit(dev) == CDEV_MINOR_MEM)
|
||||
if (dev2unit(dev) == CDEV_MINOR_MEM) {
|
||||
*paddr = offset;
|
||||
else if (dev2unit(dev) == CDEV_MINOR_KMEM)
|
||||
*paddr = vtophys(offset);
|
||||
/* else panic! */
|
||||
return (0);
|
||||
return (0);
|
||||
}
|
||||
return (-1);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -179,8 +179,6 @@ memmmap(struct cdev *dev, vm_ooffset_t offset, vm_paddr_t *paddr,
|
|||
|
||||
if (dev2unit(dev) == CDEV_MINOR_MEM)
|
||||
*paddr = offset;
|
||||
else if (dev2unit(dev) == CDEV_MINOR_KMEM)
|
||||
*paddr = vtophys(offset);
|
||||
else
|
||||
return (EFAULT);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue