o Fix kqueue write events never fired for files greater 2GB. [2] o Fix kpplications exiting due to segmentation violation on a correct memory address. [3] PR: 204046 [1] PR: 204203 [1] Errata Notice: FreeBSD-EN-15:19.kqueue [2] Errata Notice: FreeBSD-EN-15:20.vm [3] Approved by: so
30 lines
1.1 KiB
Diff
30 lines
1.1 KiB
Diff
--- sys/vm/vm_map.c.orig
|
|
+++ sys/vm/vm_map.c
|
|
@@ -3969,12 +3969,10 @@
|
|
vm_map_unlock_read(map);
|
|
return (KERN_PROTECTION_FAILURE);
|
|
}
|
|
- if ((entry->eflags & MAP_ENTRY_USER_WIRED) &&
|
|
- (entry->eflags & MAP_ENTRY_COW) &&
|
|
- (fault_type & VM_PROT_WRITE)) {
|
|
- vm_map_unlock_read(map);
|
|
- return (KERN_PROTECTION_FAILURE);
|
|
- }
|
|
+ KASSERT((prot & VM_PROT_WRITE) == 0 || (entry->eflags &
|
|
+ (MAP_ENTRY_USER_WIRED | MAP_ENTRY_NEEDS_COPY)) !=
|
|
+ (MAP_ENTRY_USER_WIRED | MAP_ENTRY_NEEDS_COPY),
|
|
+ ("entry %p flags %x", entry, entry->eflags));
|
|
if ((fault_typea & VM_PROT_COPY) != 0 &&
|
|
(entry->max_protection & VM_PROT_WRITE) == 0 &&
|
|
(entry->eflags & MAP_ENTRY_COW) == 0) {
|
|
@@ -4128,10 +4126,6 @@
|
|
fault_type &= VM_PROT_READ | VM_PROT_WRITE | VM_PROT_EXECUTE;
|
|
if ((fault_type & prot) != fault_type)
|
|
return (KERN_PROTECTION_FAILURE);
|
|
- if ((entry->eflags & MAP_ENTRY_USER_WIRED) &&
|
|
- (entry->eflags & MAP_ENTRY_COW) &&
|
|
- (fault_type & VM_PROT_WRITE))
|
|
- return (KERN_PROTECTION_FAILURE);
|
|
|
|
/*
|
|
* If this page is not pageable, we have to get it for all possible
|