HomeFreeBSD

Fix a race in release_page().

Description

Fix a race in release_page().

Since r354156 we may call release_page() without the page's object lock
held, specifically following the page copy during a CoW fault.
release_page() must therefore unbusy the page only after scheduling the
requeue, to avoid racing with a free of the page. Previously, the
object lock prevented this race from occurring.

Add some assertions that were helpful in tracking this down.

Reported by: pho, syzkaller
Tested by: pho
Reviewed by: alc, jeff, kib
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D22234

Details

Provenance
markjAuthored on Nov 6 2019, 4:59 PM
Parents
rGe3a90f49ad23: blacklist: update to NetBSD snapshot on 20191106
Branches
Unknown
Tags
Unknown

Event Timeline