aboutsummaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorAlan Cox <alc@FreeBSD.org>2017-03-20 05:15:55 +0000
committerAlan Cox <alc@FreeBSD.org>2017-03-20 05:15:55 +0000
commit2a016de1a5abdf87ae6e00f879a3600d157a8ca2 (patch)
treed7b1499d93f36e5d7a614963802498f737e4e835 /sys
parent9c2aa0a0a35a3a7ae58f0e3654943a91f3c48189 (diff)
Notes
Diffstat (limited to 'sys')
-rw-r--r--sys/kern/uipc_shm.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/sys/kern/uipc_shm.c b/sys/kern/uipc_shm.c
index cd1bf0b7142c7..55362c5ad7040 100644
--- a/sys/kern/uipc_shm.c
+++ b/sys/kern/uipc_shm.c
@@ -418,6 +418,7 @@ shm_dotruncate(struct shmfd *shmfd, off_t length)
vm_ooffset_t delta;
int base, rv;
+ KASSERT(length >= 0, ("shm_dotruncate: length < 0"));
object = shmfd->shm_object;
VM_OBJECT_WLOCK(object);
if (length == shmfd->shm_size) {
@@ -486,7 +487,7 @@ retry:
vm_pager_page_unswapped(m);
}
}
- delta = ptoa(object->size - nobjsize);
+ delta = IDX_TO_OFF(object->size - nobjsize);
/* Toss in memory pages. */
if (nobjsize < object->size)
@@ -501,8 +502,8 @@ retry:
swap_release_by_cred(delta, object->cred);
object->charge -= delta;
} else {
- /* Attempt to reserve the swap */
- delta = ptoa(nobjsize - object->size);
+ /* Try to reserve additional swap space. */
+ delta = IDX_TO_OFF(nobjsize - object->size);
if (!swap_reserve_by_cred(delta, object->cred)) {
VM_OBJECT_WUNLOCK(object);
return (ENOMEM);