drivers/s390: cdev lock_kernel() pushdown

Signed-off-by: Jonathan Corbet <corbet@lwn.net>
Este commit está contenido en:
Jonathan Corbet
2008-05-15 10:01:17 -06:00
padre 51a776fa7a
commit 764a4a8e54
Se han modificado 4 ficheros con 41 adiciones y 14 borrados

Ver fichero

@@ -9,6 +9,7 @@
*/
#include <linux/cdev.h>
#include <linux/smp_lock.h>
#include <asm/uaccess.h>
#include <asm/cio.h>
@@ -668,7 +669,7 @@ static int ur_open(struct inode *inode, struct file *file)
if (accmode == O_RDWR)
return -EACCES;
lock_kernel();
/*
* We treat the minor number as the devno of the ur device
* to find in the driver tree.
@@ -676,8 +677,10 @@ static int ur_open(struct inode *inode, struct file *file)
devno = MINOR(file->f_dentry->d_inode->i_rdev);
urd = urdev_get_from_devno(devno);
if (!urd)
return -ENXIO;
if (!urd) {
rc = -ENXIO;
goto out;
}
spin_lock(&urd->open_lock);
while (urd->open_flag) {
@@ -720,6 +723,7 @@ static int ur_open(struct inode *inode, struct file *file)
goto fail_urfile_free;
urf->file_reclen = rc;
file->private_data = urf;
unlock_kernel();
return 0;
fail_urfile_free:
@@ -730,6 +734,8 @@ fail_unlock:
spin_unlock(&urd->open_lock);
fail_put:
urdev_put(urd);
out:
unlock_kernel();
return rc;
}