diff options
| author | Alan Cox <alc@FreeBSD.org> | 2026-11-01 18:25:05 +0000 |
|---|---|---|
| committer | Alan Cox <alc@FreeBSD.org> | 2026-11-01 20:56:44 +0000 |
| commit | 6d7960628f825f1eec0959d6000a79ca8a4ae927 (patch) | |
| tree | 2f5b05dad07b373e633922decb2bfb76935dd87a /sys/modules/i2c/jedec_dimm | |
| parent | 57d8db405e68fa32b98aec803693f0f5880b9b92 (diff) | |
When pmap_clear_modify() demotes a dirty L2 block mapping, it write
protects the L3 entry that maps "m", so that a subsequent write access
may repromote. However, since fd6cb031f577, the L3 entries created by
pmap_demote_l2_locked() may have ATTR_CONTIGUOUS set, and
pmap_clear_modify() was write protecting one L3 entry within an L3C page
while leaving the page's other L3 entries writeable with ATTR_CONTIGUOUS
still set. A TLB entry that a processor creates from any of those other
L3 entries may translate "m"'s virtual address and permit writes to "m"
without a fault. To fix this issue, as in pmap_remove_write(), demote
the L3C page before write protecting the L3 entry.
Found by: Claude Code (Opus 5.5)
Fixes: fd6cb031f577 "arm64 pmap: Add ATTR_CONTIGUOUS support [Part 1]"
MFC after: 1 week
Diffstat (limited to 'sys/modules/i2c/jedec_dimm')
0 files changed, 0 insertions, 0 deletions
