git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.4-vs2.0.2-rc26.diff
[linux-2.6.git]
/
drivers
/
infiniband
/
hw
/
ipath
/
ipath_user_pages.c
diff --git
a/drivers/infiniband/hw/ipath/ipath_user_pages.c
b/drivers/infiniband/hw/ipath/ipath_user_pages.c
index
2bb08af
..
aae24d8
100644
(file)
--- a/
drivers/infiniband/hw/ipath/ipath_user_pages.c
+++ b/
drivers/infiniband/hw/ipath/ipath_user_pages.c
@@
-32,6
+32,7
@@
#include <linux/mm.h>
#include <linux/device.h>
#include <linux/mm.h>
#include <linux/device.h>
+#include <linux/vs_memory.h>
#include "ipath_kernel.h"
#include "ipath_kernel.h"
@@
-71,7
+72,8
@@
static int __get_user_pages(unsigned long start_page, size_t num_pages,
lock_limit = current->signal->rlim[RLIMIT_MEMLOCK].rlim_cur >>
PAGE_SHIFT;
lock_limit = current->signal->rlim[RLIMIT_MEMLOCK].rlim_cur >>
PAGE_SHIFT;
- if (num_pages > lock_limit) {
+ if (num_pages > lock_limit ||
+ !vx_vmlocked_avail(current->mm, num_pages)) {
ret = -ENOMEM;
goto bail;
}
ret = -ENOMEM;
goto bail;
}
@@
-88,7
+90,7
@@
static int __get_user_pages(unsigned long start_page, size_t num_pages,
goto bail_release;
}
goto bail_release;
}
-
current->mm->locked_vm += num_pages
;
+
vx_vmlocked_add(current->mm, num_pages)
;
ret = 0;
goto bail;
ret = 0;
goto bail;
@@
-157,7
+159,7
@@
void ipath_release_user_pages(struct page **p, size_t num_pages)
__ipath_release_user_pages(p, num_pages, 1);
__ipath_release_user_pages(p, num_pages, 1);
-
current->mm->locked_vm -= num_pages
;
+
vx_vmlocked_sub(current->mm, num_pages)
;
up_write(¤t->mm->mmap_sem);
}
up_write(¤t->mm->mmap_sem);
}
@@
-173,7
+175,7
@@
static void user_pages_account(void *ptr)
struct ipath_user_pages_work *work = ptr;
down_write(&work->mm->mmap_sem);
struct ipath_user_pages_work *work = ptr;
down_write(&work->mm->mmap_sem);
-
work->mm->locked_vm -= work->num_pages
;
+
vx_vmlocked_sub(work->mm, work->num_pages)
;
up_write(&work->mm->mmap_sem);
mmput(work->mm);
kfree(work);
up_write(&work->mm->mmap_sem);
mmput(work->mm);
kfree(work);