projects
/
deliverable
/
linux.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
initrd: cast `initrd_start' to `void *'
[deliverable/linux.git]
/
fs
/
char_dev.c
diff --git
a/fs/char_dev.c
b/fs/char_dev.c
index 038674aa88a72c09a88388ee7cf1b54839675052..3cb7cda3d780e95026142398f4c52cdf565d93b6 100644
(file)
--- a/
fs/char_dev.c
+++ b/
fs/char_dev.c
@@
-55,7
+55,6
@@
static struct char_device_struct {
unsigned int baseminor;
int minorct;
char name[64];
unsigned int baseminor;
int minorct;
char name[64];
- struct file_operations *fops;
struct cdev *cdev; /* will die */
} *chrdevs[CHRDEV_MAJOR_HASH_SIZE];
struct cdev *cdev; /* will die */
} *chrdevs[CHRDEV_MAJOR_HASH_SIZE];
@@
-374,6
+373,8
@@
static int chrdev_open(struct inode *inode, struct file *filp)
return -ENXIO;
new = container_of(kobj, struct cdev, kobj);
spin_lock(&cdev_lock);
return -ENXIO;
new = container_of(kobj, struct cdev, kobj);
spin_lock(&cdev_lock);
+ /* Check i_cdev again in case somebody beat us to it while
+ we dropped the lock. */
p = inode->i_cdev;
if (!p) {
inode->i_cdev = p = new;
p = inode->i_cdev;
if (!p) {
inode->i_cdev = p = new;
@@
-393,11
+394,8
@@
static int chrdev_open(struct inode *inode, struct file *filp)
cdev_put(p);
return -ENXIO;
}
cdev_put(p);
return -ENXIO;
}
- if (filp->f_op->open) {
- lock_kernel();
+ if (filp->f_op->open)
ret = filp->f_op->open(inode,filp);
ret = filp->f_op->open(inode,filp);
- unlock_kernel();
- }
if (ret)
cdev_put(p);
return ret;
if (ret)
cdev_put(p);
return ret;
This page took
0.024615 seconds
and
5
git commands to generate.