diff options
Diffstat (limited to 'drivers/char/misc.c')
| -rw-r--r-- | drivers/char/misc.c | 17 | 
1 files changed, 7 insertions, 10 deletions
diff --git a/drivers/char/misc.c b/drivers/char/misc.c index fdb0f9b3fe45..8069b361b8dd 100644 --- a/drivers/char/misc.c +++ b/drivers/char/misc.c @@ -243,17 +243,15 @@ int misc_register(struct miscdevice * misc)   *	@misc: device to unregister   *   *	Unregister a miscellaneous device that was previously - *	successfully registered with misc_register(). Success - *	is indicated by a zero return, a negative errno code - *	indicates an error. + *	successfully registered with misc_register().   */ -int misc_deregister(struct miscdevice *misc) +void misc_deregister(struct miscdevice *misc)  {  	int i = DYNAMIC_MINORS - misc->minor - 1;  	if (WARN_ON(list_empty(&misc->list))) -		return -EINVAL; +		return;  	mutex_lock(&misc_mtx);  	list_del(&misc->list); @@ -261,7 +259,6 @@ int misc_deregister(struct miscdevice *misc)  	if (i < DYNAMIC_MINORS && i >= 0)  		clear_bit(i, misc_minors);  	mutex_unlock(&misc_mtx); -	return 0;  }  EXPORT_SYMBOL(misc_register); @@ -281,10 +278,9 @@ static char *misc_devnode(struct device *dev, umode_t *mode)  static int __init misc_init(void)  {  	int err; +	struct proc_dir_entry *ret; -#ifdef CONFIG_PROC_FS -	proc_create("misc", 0, NULL, &misc_proc_fops); -#endif +	ret = proc_create("misc", 0, NULL, &misc_proc_fops);  	misc_class = class_create(THIS_MODULE, "misc");  	err = PTR_ERR(misc_class);  	if (IS_ERR(misc_class)) @@ -300,7 +296,8 @@ fail_printk:  	printk("unable to get major %d for misc devices\n", MISC_MAJOR);  	class_destroy(misc_class);  fail_remove: -	remove_proc_entry("misc", NULL); +	if (ret) +		remove_proc_entry("misc", NULL);  	return err;  }  subsys_initcall(misc_init);  |