summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJon Smirl <jonsmirl@yahoo.com>2004-09-20 17:09:26 +0000
committerJon Smirl <jonsmirl@yahoo.com>2004-09-20 17:09:26 +0000
commit59cc1d8256fb3b6e2374e52eb24da12b046aea91 (patch)
tree19083c996243afdd6cad3c05dacc1964555e7885
parent5654880eeed0646a53655b093f4d3bf5608ebcc7 (diff)
Felix's fix for map request smaller than permanent map size
-rw-r--r--linux-core/drm_bufs.c2
-rw-r--r--linux-core/drm_vm.c2
-rw-r--r--linux/drm_bufs.h2
-rw-r--r--linux/drm_vm.h2
4 files changed, 4 insertions, 4 deletions
diff --git a/linux-core/drm_bufs.c b/linux-core/drm_bufs.c
index 46cff57d..84ca1f47 100644
--- a/linux-core/drm_bufs.c
+++ b/linux-core/drm_bufs.c
@@ -186,7 +186,7 @@ int DRM(addmap)( struct inode *inode, struct file *filp,
drm_map_list_t *_entry = list_entry( _list, drm_map_list_t, head );
if ( _entry->map && _entry->map->type == map->type &&
_entry->map->offset == map->offset &&
- _entry->map->size == map->size ) {
+ _entry->map->size >= map->size ) {
DRM(free)( map, sizeof(*map), DRM_MEM_MAPS );
map = _entry->map;
DRM_DEBUG( "Found existing: offset = 0x%08lx, size = 0x%08lx, type = %d\n",
diff --git a/linux-core/drm_vm.c b/linux-core/drm_vm.c
index 277aae0a..30b0e73e 100644
--- a/linux-core/drm_vm.c
+++ b/linux-core/drm_vm.c
@@ -569,7 +569,7 @@ int DRM(mmap)(struct file *filp, struct vm_area_struct *vma)
return -EPERM;
/* Check for valid size. */
- if (map->size != vma->vm_end - vma->vm_start) return -EINVAL;
+ if (map->size < vma->vm_end - vma->vm_start) return -EINVAL;
if (!capable(CAP_SYS_ADMIN) && (map->flags & _DRM_READ_ONLY)) {
vma->vm_flags &= ~(VM_WRITE | VM_MAYWRITE);
diff --git a/linux/drm_bufs.h b/linux/drm_bufs.h
index 46cff57d..84ca1f47 100644
--- a/linux/drm_bufs.h
+++ b/linux/drm_bufs.h
@@ -186,7 +186,7 @@ int DRM(addmap)( struct inode *inode, struct file *filp,
drm_map_list_t *_entry = list_entry( _list, drm_map_list_t, head );
if ( _entry->map && _entry->map->type == map->type &&
_entry->map->offset == map->offset &&
- _entry->map->size == map->size ) {
+ _entry->map->size >= map->size ) {
DRM(free)( map, sizeof(*map), DRM_MEM_MAPS );
map = _entry->map;
DRM_DEBUG( "Found existing: offset = 0x%08lx, size = 0x%08lx, type = %d\n",
diff --git a/linux/drm_vm.h b/linux/drm_vm.h
index 277aae0a..30b0e73e 100644
--- a/linux/drm_vm.h
+++ b/linux/drm_vm.h
@@ -569,7 +569,7 @@ int DRM(mmap)(struct file *filp, struct vm_area_struct *vma)
return -EPERM;
/* Check for valid size. */
- if (map->size != vma->vm_end - vma->vm_start) return -EINVAL;
+ if (map->size < vma->vm_end - vma->vm_start) return -EINVAL;
if (!capable(CAP_SYS_ADMIN) && (map->flags & _DRM_READ_ONLY)) {
vma->vm_flags &= ~(VM_WRITE | VM_MAYWRITE);