forked from Minki/linux
drivers/IB,qib: Fix pinned/locked limit check in qib_get_user_pages()
The current check does not take into account the previous value of pinned_vm; thus it is quite bogus as is. Fix this by checking the new value after the (optimistic) atomic inc. Signed-off-by: Davidlohr Bueso <dbueso@suse.de> Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
This commit is contained in:
parent
d0e02bf6cd
commit
ec95e0fa21
@ -107,7 +107,7 @@ int qib_get_user_pages(unsigned long start_page, size_t num_pages,
|
||||
lock_limit = rlimit(RLIMIT_MEMLOCK) >> PAGE_SHIFT;
|
||||
locked = atomic64_add_return(num_pages, ¤t->mm->pinned_vm);
|
||||
|
||||
if (num_pages > lock_limit && !capable(CAP_IPC_LOCK)) {
|
||||
if (locked > lock_limit && !capable(CAP_IPC_LOCK)) {
|
||||
ret = -ENOMEM;
|
||||
goto bail;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user