diff options
author | Jeremy Fitzhardinge <jeremy@goop.org> | 2009-11-17 14:08:54 -0800 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2009-11-24 13:02:30 +1000 |
commit | 79cc304f3e2fda202242036326afb2aeca486156 (patch) | |
tree | c8bcdd91b36e8663b94911c6ac2481eadbe53bb0 /drivers/gpu/drm/drm_gem.c | |
parent | f82f5f3ac4de6c6b872fcbb3dec97f368e78ff58 (diff) | |
download | linux-3.10-79cc304f3e2fda202242036326afb2aeca486156.tar.gz linux-3.10-79cc304f3e2fda202242036326afb2aeca486156.tar.bz2 linux-3.10-79cc304f3e2fda202242036326afb2aeca486156.zip |
drm: make sure page protections are updated after changing vm_flags
Some architectures compute ->vm_page_prot depending on ->vm_flags, so we
need to update the protections after adjusting the flags.
AFAIK this only affects running X under Xen; without this patch you get
lots of coloured blobs on the screen, or maybe a complete lockup. Or
anything really.
But that still depends on lots of out-of-tree stuff, so I don't think
there are any consequences for anyone else. But it is wrong in principle.
Reported-by: Jan Beulich <JBeulich@novell.com>
Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/drm_gem.c')
-rw-r--r-- | drivers/gpu/drm/drm_gem.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/gpu/drm/drm_gem.c b/drivers/gpu/drm/drm_gem.c index 80391995bde..e9dbb481c46 100644 --- a/drivers/gpu/drm/drm_gem.c +++ b/drivers/gpu/drm/drm_gem.c @@ -552,7 +552,7 @@ int drm_gem_mmap(struct file *filp, struct vm_area_struct *vma) vma->vm_flags |= VM_RESERVED | VM_IO | VM_PFNMAP | VM_DONTEXPAND; vma->vm_ops = obj->dev->driver->gem_vm_ops; vma->vm_private_data = map->handle; - vma->vm_page_prot = pgprot_writecombine(vma->vm_page_prot); + vma->vm_page_prot = pgprot_writecombine(vm_get_page_prot(vma->vm_flags)); /* Take a ref for this mapping of the object, so that the fault * handler can dereference the mmap offset's pointer to the object. |