aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Johnston <markj@FreeBSD.org>2020-12-27 21:50:54 +0000
committerMark Johnston <markj@FreeBSD.org>2020-12-27 22:01:44 +0000
commit81846def349538d6dcd8d5efcc1c8d67ff0b4b41 (patch)
treef791291ebb72a6d712cb85970cb6f145f04d686a
parentd2f1c44bc9f9798090d5ae91a4ab2b89c819ca4b (diff)
-rw-r--r--sys/vm/vm_page.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/sys/vm/vm_page.c b/sys/vm/vm_page.c
index cb5b5091ebb1..e668bbdc6178 100644
--- a/sys/vm/vm_page.c
+++ b/sys/vm/vm_page.c
@@ -882,7 +882,7 @@ vm_page_busy_acquire(vm_page_t m, int allocflags)
* It is assumed that a reference to the object is already
* held by the callers.
*/
- obj = m->object;
+ obj = atomic_load_ptr(&m->object);
for (;;) {
if (vm_page_tryacquire(m, allocflags))
return (true);
@@ -4386,8 +4386,8 @@ vm_page_grab_sleep(vm_object_t object, vm_page_t m, vm_pindex_t pindex,
if (locked && (allocflags & VM_ALLOC_NOCREAT) == 0)
vm_page_reference(m);
- if (_vm_page_busy_sleep(object, m, m->pindex, wmesg, allocflags,
- locked) && locked)
+ if (_vm_page_busy_sleep(object, m, pindex, wmesg, allocflags, locked) &&
+ locked)
VM_OBJECT_WLOCK(object);
if ((allocflags & VM_ALLOC_WAITFAIL) != 0)
return (false);
@@ -4780,7 +4780,7 @@ retrylookup:
for (; i < count; i++) {
if (m != NULL) {
if (!vm_page_tryacquire(m, allocflags)) {
- if (vm_page_grab_sleep(object, m, pindex,
+ if (vm_page_grab_sleep(object, m, pindex + i,
"grbmaw", allocflags, true))
goto retrylookup;
break;