Page MenuHomeFreeBSD

D31875.id94850.diff
No OneTemporary

D31875.id94850.diff

diff --git a/sys/vm/swap_pager.h b/sys/vm/swap_pager.h
--- a/sys/vm/swap_pager.h
+++ b/sys/vm/swap_pager.h
@@ -78,7 +78,7 @@
vm_pindex_t swap_pager_find_least(vm_object_t object, vm_pindex_t pindex);
void swap_pager_swap_init(void);
int swap_pager_nswapdev(void);
-int swap_pager_reserve(vm_object_t, vm_pindex_t, vm_size_t);
+int swap_pager_reserve(vm_object_t, vm_pindex_t, vm_pindex_t);
void swap_pager_status(int *total, int *used);
u_long swap_pager_swapped_pages(vm_object_t object);
void swapoff_all(void);
diff --git a/sys/vm/swap_pager.c b/sys/vm/swap_pager.c
--- a/sys/vm/swap_pager.c
+++ b/sys/vm/swap_pager.c
@@ -82,6 +82,7 @@
#include <sys/disklabel.h>
#include <sys/eventhandler.h>
#include <sys/fcntl.h>
+#include <sys/limits.h>
#include <sys/lock.h>
#include <sys/kernel.h>
#include <sys/mount.h>
@@ -977,15 +978,16 @@
* Returns 0 on success, -1 on failure.
*/
int
-swap_pager_reserve(vm_object_t object, vm_pindex_t start, vm_size_t size)
+swap_pager_reserve(vm_object_t object, vm_pindex_t start, vm_pindex_t size)
{
daddr_t addr, blk, n_free, s_free;
- int i, j, n;
+ vm_pindex_t i, j;
+ int n;
swp_pager_init_freerange(&s_free, &n_free);
VM_OBJECT_WLOCK(object);
for (i = 0; i < size; i += n) {
- n = size - i;
+ n = MIN(size - i, INT_MAX);
blk = swp_pager_getswapspace(&n);
if (blk == SWAPBLK_NONE) {
swp_pager_meta_free(object, start, i);

File Metadata

Mime Type
text/plain
Expires
Sun, Apr 27, 12:18 PM (17 h, 20 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
17817561
Default Alt Text
D31875.id94850.diff (1 KB)

Event Timeline