summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--linux-core/drm_bufs.c16
-rw-r--r--linux/drm_bufs.h16
2 files changed, 32 insertions, 0 deletions
diff --git a/linux-core/drm_bufs.c b/linux-core/drm_bufs.c
index f310eced..d3ca48b4 100644
--- a/linux-core/drm_bufs.c
+++ b/linux-core/drm_bufs.c
@@ -768,18 +768,34 @@ int DRM(mapbufs)( struct inode *inode, struct file *filp,
goto done;
}
+#if LINUX_VERSION_CODE < 0x020402
+ down( &current->mm->mmap_sem );
+#else
down_write( &current->mm->mmap_sem );
+#endif
virtual = do_mmap( filp, 0, map->size,
PROT_READ | PROT_WRITE,
MAP_SHARED,
(unsigned long)map->offset );
+#if LINUX_VERSION_CODE < 0x020402
+ up( &current->mm->mmap_sem );
+#else
up_write( &current->mm->mmap_sem );
+#endif
} else {
+#if LINUX_VERSION_CODE < 0x020402
+ down( &current->mm->mmap_sem );
+#else
down_write( &current->mm->mmap_sem );
+#endif
virtual = do_mmap( filp, 0, dma->byte_count,
PROT_READ | PROT_WRITE,
MAP_SHARED, 0 );
+#if LINUX_VERSION_CODE < 0x020402
+ up( &current->mm->mmap_sem );
+#else
up_write( &current->mm->mmap_sem );
+#endif
}
if ( virtual > -1024UL ) {
/* Real error */
diff --git a/linux/drm_bufs.h b/linux/drm_bufs.h
index f310eced..d3ca48b4 100644
--- a/linux/drm_bufs.h
+++ b/linux/drm_bufs.h
@@ -768,18 +768,34 @@ int DRM(mapbufs)( struct inode *inode, struct file *filp,
goto done;
}
+#if LINUX_VERSION_CODE < 0x020402
+ down( &current->mm->mmap_sem );
+#else
down_write( &current->mm->mmap_sem );
+#endif
virtual = do_mmap( filp, 0, map->size,
PROT_READ | PROT_WRITE,
MAP_SHARED,
(unsigned long)map->offset );
+#if LINUX_VERSION_CODE < 0x020402
+ up( &current->mm->mmap_sem );
+#else
up_write( &current->mm->mmap_sem );
+#endif
} else {
+#if LINUX_VERSION_CODE < 0x020402
+ down( &current->mm->mmap_sem );
+#else
down_write( &current->mm->mmap_sem );
+#endif
virtual = do_mmap( filp, 0, dma->byte_count,
PROT_READ | PROT_WRITE,
MAP_SHARED, 0 );
+#if LINUX_VERSION_CODE < 0x020402
+ up( &current->mm->mmap_sem );
+#else
up_write( &current->mm->mmap_sem );
+#endif
}
if ( virtual > -1024UL ) {
/* Real error */