]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
Fix some races introduced in r332974.
authormarkj <markj@FreeBSD.org>
Fri, 4 May 2018 17:17:30 +0000 (17:17 +0000)
committermarkj <markj@FreeBSD.org>
Fri, 4 May 2018 17:17:30 +0000 (17:17 +0000)
commitc1d51518dd07d112e54b6247ac8df94c15ab963b
tree5b69e01b1c1680a19da0c3c93a096cb1544927ca
parentec3825b08ff388271dddf5b26313f86898785a61
Fix some races introduced in r332974.

With r332974, when performing a synchronized access of a page's "queue"
field, one must first check whether the page is logically dequeued. If
so, then the page lock does not prevent the page from being removed
from its page queue. Intoduce vm_page_queue(), which returns the page's
logical queue index. In some cases, direct access to the "queue" field
is still required, but such accesses should be confined to sys/vm.

Reported and tested by: pho
Reviewed by: kib
Sponsored by: Dell EMC Isilon
Differential Revision: https://reviews.freebsd.org/D15280
sys/kern/kern_sendfile.c
sys/kern/vfs_bio.c
sys/vm/vm_object.c
sys/vm/vm_page.c
sys/vm/vm_page.h
sys/vm/vm_pageout.c