git://ftp.safe.ca
/
safe
/
jmp
/
linux-2.6
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
mem: cdev lock_kernel() pushdown
[safe/jmp/linux-2.6]
/
fs
/
char_dev.c
diff --git
a/fs/char_dev.c
b/fs/char_dev.c
index
bbbf07b
..
68e510b
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];
@@
-357,7
+356,7
@@
void cdev_put(struct cdev *p)
/*
* Called every time a character special file is opened
*/
/*
* Called every time a character special file is opened
*/
-
int chrdev_open(struct inode * inode, struct file *
filp)
+
static int chrdev_open(struct inode *inode, struct file *
filp)
{
struct cdev *p;
struct cdev *new = NULL;
{
struct cdev *p;
struct cdev *new = NULL;
@@
-510,9
+509,8
@@
struct cdev *cdev_alloc(void)
{
struct cdev *p = kzalloc(sizeof(struct cdev), GFP_KERNEL);
if (p) {
{
struct cdev *p = kzalloc(sizeof(struct cdev), GFP_KERNEL);
if (p) {
- p->kobj.ktype = &ktype_cdev_dynamic;
INIT_LIST_HEAD(&p->list);
INIT_LIST_HEAD(&p->list);
- kobject_init(&p->kobj);
+ kobject_init(&p->kobj
, &ktype_cdev_dynamic
);
}
return p;
}
}
return p;
}
@@
-529,8
+527,7
@@
void cdev_init(struct cdev *cdev, const struct file_operations *fops)
{
memset(cdev, 0, sizeof *cdev);
INIT_LIST_HEAD(&cdev->list);
{
memset(cdev, 0, sizeof *cdev);
INIT_LIST_HEAD(&cdev->list);
- cdev->kobj.ktype = &ktype_cdev_default;
- kobject_init(&cdev->kobj);
+ kobject_init(&cdev->kobj, &ktype_cdev_default);
cdev->ops = fops;
}
cdev->ops = fops;
}
@@
-545,6
+542,7
@@
static struct kobject *base_probe(dev_t dev, int *part, void *data)
void __init chrdev_init(void)
{
cdev_map = kobj_map_init(base_probe, &chrdevs_lock);
void __init chrdev_init(void)
{
cdev_map = kobj_map_init(base_probe, &chrdevs_lock);
+ bdi_init(&directly_mappable_cdev_bdi);
}
}