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
F131895897: D22124.id.diff
Sun, Oct 12, 1:23 AM
Unknown Object (File)
Wed, Sep 17, 11:46 PM
Unknown Object (File)
Sep 7 2025, 2:24 PM
Unknown Object (File)
Aug 6 2025, 5:13 PM
Unknown Object (File)
Jul 28 2025, 12:32 AM
Unknown Object (File)
Jul 28 2025, 12:28 AM
Unknown Object (File)
Jul 26 2025, 12:52 PM
Unknown Object (File)
Jul 23 2025, 10:59 PM
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

Repository
rS FreeBSD src repository - subversion
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

markj added reviewers: alc, kib, jeff.
sys/vm/vnode_pager.c
1152 ↗(On Diff #63581)

But how this was not the problem before ?

sys/vm/vnode_pager.c
1152 ↗(On Diff #63581)

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