summaryrefslogtreecommitdiffstats
path: root/sys/netinet/tcp_syncache.c
diff options
context:
space:
mode:
authoralc <alc@FreeBSD.org>2012-08-01 16:04:13 +0000
committeralc <alc@FreeBSD.org>2012-08-01 16:04:13 +0000
commit9c4b62fad8853cdccbe2f3a1900de7ec19bb52ca (patch)
treeca90665994a83282a7e75e13ed388776aca81e44 /sys/netinet/tcp_syncache.c
parente5c6ca6783da2418a0046f43f47977f4534925d3 (diff)
downloadFreeBSD-src-9c4b62fad8853cdccbe2f3a1900de7ec19bb52ca.zip
FreeBSD-src-9c4b62fad8853cdccbe2f3a1900de7ec19bb52ca.tar.gz
Revise pmap_enter()'s handling of mapping updates that change the
PTE's PG_M and PG_RW bits but not the physical page frame. First, only perform vm_page_dirty() on a managed vm_page when the PG_M bit is being cleared. If the updated PTE continues to have PG_M set, then there is no requirement to perform vm_page_dirty(). Second, flush the mapping from the TLB when PG_M alone is cleared, not just when PG_M and PG_RW are cleared. Otherwise, a stale TLB entry may stop PG_M from being set again on the next store to the virtual page. However, since the vm_page's dirty field already shows the physical page as being dirty, no actual harm comes from the PG_M bit not being set. Nonetheless, it is potentially confusing to someone expecting to see the PTE change after a store to the virtual page.
Diffstat (limited to 'sys/netinet/tcp_syncache.c')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud