Page MenuHomeFreeBSD

Fix a couple of issues in the recent work on page busying.
ClosedPublic

Authored by markj on Oct 23 2019, 2:29 PM.
Tags
None
Referenced Files
F156810250: D22124.id63596.diff
Sat, May 16, 2:20 PM
Unknown Object (File)
Fri, May 8, 7:13 AM
Unknown Object (File)
Thu, Apr 30, 3:22 AM
Unknown Object (File)
Sun, Apr 26, 9:46 PM
Unknown Object (File)
Sat, Apr 25, 7:28 PM
Unknown Object (File)
Fri, Apr 24, 11:42 PM
Unknown Object (File)
Wed, Apr 22, 7:33 PM
Unknown Object (File)
Mon, Apr 20, 3:19 AM
Subscribers

Details

Summary
  • vnode_pager_generic_getpages_done() must skip bogus_page.
  • vm_page_busy_acquire() must handle WAITFAIL before verifying the page's identity has not changed. If the caller does not provide this guarantee, it must use WAITFAIL or NOWAIT.
Test Plan

syzkaller found these bugs.

Diff Detail

Lint
Lint Passed
Unit
No Test Coverage
Build Status
Buildable 27168
Build 25440: arc lint + arc unit

Event Timeline

markj added reviewers: alc, kib, jeff.
sys/vm/vnode_pager.c
1152

But how this was not the problem before ?

sys/vm/vnode_pager.c
1152

vm_page_valid() now asserts that the page is busy, but this is not the case for bogus_page. vm_pager_assert_in() contains the same hack.

This revision is now accepted and ready to land.Oct 23 2019, 3:20 PM