Initialize vm_page_prot to VM_MEMATTR_DEFAULT instead of 0.
If a driver's Linux mmap callback passed vm_page_prot through unchanged, then linux_dev_mmap_single() would try to apply whatever VM_MEMATTR_xxx value 0 is to the mapping. On x86, VM_MEMATTR_DEFAULT is the PAT value for write-back (WB) which is 6, while 0 maps to the PAT value for uncacheable (UC). Thus, any mmap request that did not explicitly set page_prot was tried to map memory as UC triggering the warning in sg_pager_getpages(). Tested by: np Reported by: Krishnamraju Eraparaju @ Chelsio MFC after: 3 days Sponsored by: Chelsio Communications
This commit is contained in:
parent
eef4b2b8aa
commit
aae5878eb3
@ -587,7 +587,7 @@ linux_dev_mmap_single(struct cdev *dev, vm_ooffset_t *offset,
|
||||
vma.vm_end = size;
|
||||
vma.vm_pgoff = *offset / PAGE_SIZE;
|
||||
vma.vm_pfn = 0;
|
||||
vma.vm_page_prot = 0;
|
||||
vma.vm_page_prot = VM_MEMATTR_DEFAULT;
|
||||
if (filp->f_op->mmap) {
|
||||
error = -filp->f_op->mmap(filp, &vma);
|
||||
if (error == 0) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user