Skip to content

Commit

Permalink
mem: cdev lock_kernel() pushdown
Browse files Browse the repository at this point in the history
It's really hard to tell if this is necessary - lots of weird
magic happens by way of map_devmem()

Signed-off-by: Jonathan Corbet <corbet@lwn.net>
  • Loading branch information
Jonathan Corbet committed Jun 20, 2008
1 parent ecc3898 commit 1f43964
Showing 1 changed file with 8 additions and 2 deletions.
10 changes: 8 additions & 2 deletions drivers/char/mem.c
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
#include <linux/bootmem.h>
#include <linux/splice.h>
#include <linux/pfn.h>
#include <linux/smp_lock.h>

#include <asm/uaccess.h>
#include <asm/io.h>
Expand Down Expand Up @@ -889,6 +890,9 @@ static const struct file_operations kmsg_fops = {

static int memory_open(struct inode * inode, struct file * filp)
{
int ret = 0;

lock_kernel();
switch (iminor(inode)) {
case 1:
filp->f_op = &mem_fops;
Expand Down Expand Up @@ -932,11 +936,13 @@ static int memory_open(struct inode * inode, struct file * filp)
break;
#endif
default:
unlock_kernel();
return -ENXIO;
}
if (filp->f_op && filp->f_op->open)
return filp->f_op->open(inode,filp);
return 0;
ret = filp->f_op->open(inode,filp);
unlock_kernel();
return ret;
}

static const struct file_operations memory_fops = {
Expand Down

0 comments on commit 1f43964

Please sign in to comment.