aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/char/misc.c9
-rw-r--r--drivers/md/dm-ioctl.c4
-rw-r--r--drivers/misc/vmw_vmci/vmci_host.c7
-rw-r--r--drivers/rtc/rtc-ds1374.c5
-rw-r--r--drivers/staging/android/ashmem.c7
-rw-r--r--drivers/staging/android/ion/ion_test.c3
-rw-r--r--drivers/staging/lustre/lustre/libcfs/module.c4
-rw-r--r--drivers/vhost/scsi.c4
-rw-r--r--drivers/watchdog/at91rm9200_wdt.c5
-rw-r--r--drivers/watchdog/ks8695_wdt.c9
-rw-r--r--drivers/watchdog/ts72xx_wdt.c3
-rw-r--r--fs/btrfs/super.c3
-rw-r--r--fs/dlm/plock.c3
-rw-r--r--fs/dlm/user.c9
-rw-r--r--fs/ocfs2/stack_user.c9
-rw-r--r--include/linux/miscdevice.h2
16 files changed, 27 insertions, 59 deletions
diff --git a/drivers/char/misc.c b/drivers/char/misc.c
index c83ef9652bc9..8069b361b8dd 100644
--- a/drivers/char/misc.c
+++ b/drivers/char/misc.c
@@ -243,17 +243,15 @@ int misc_register(struct miscdevice * misc)
243 * @misc: device to unregister 243 * @misc: device to unregister
244 * 244 *
245 * Unregister a miscellaneous device that was previously 245 * Unregister a miscellaneous device that was previously
246 * successfully registered with misc_register(). Success 246 * successfully registered with misc_register().
247 * is indicated by a zero return, a negative errno code
248 * indicates an error.
249 */ 247 */
250 248
251int misc_deregister(struct miscdevice *misc) 249void misc_deregister(struct miscdevice *misc)
252{ 250{
253 int i = DYNAMIC_MINORS - misc->minor - 1; 251 int i = DYNAMIC_MINORS - misc->minor - 1;
254 252
255 if (WARN_ON(list_empty(&misc->list))) 253 if (WARN_ON(list_empty(&misc->list)))
256 return -EINVAL; 254 return;
257 255
258 mutex_lock(&misc_mtx); 256 mutex_lock(&misc_mtx);
259 list_del(&misc->list); 257 list_del(&misc->list);
@@ -261,7 +259,6 @@ int misc_deregister(struct miscdevice *misc)
261 if (i < DYNAMIC_MINORS && i >= 0) 259 if (i < DYNAMIC_MINORS && i >= 0)
262 clear_bit(i, misc_minors); 260 clear_bit(i, misc_minors);
263 mutex_unlock(&misc_mtx); 261 mutex_unlock(&misc_mtx);
264 return 0;
265} 262}
266 263
267EXPORT_SYMBOL(misc_register); 264EXPORT_SYMBOL(misc_register);
diff --git a/drivers/md/dm-ioctl.c b/drivers/md/dm-ioctl.c
index 720ceeb7fa9b..80a439543259 100644
--- a/drivers/md/dm-ioctl.c
+++ b/drivers/md/dm-ioctl.c
@@ -1919,9 +1919,7 @@ int __init dm_interface_init(void)
1919 1919
1920void dm_interface_exit(void) 1920void dm_interface_exit(void)
1921{ 1921{
1922 if (misc_deregister(&_dm_misc) < 0) 1922 misc_deregister(&_dm_misc);
1923 DMERR("misc_deregister failed for control device");
1924
1925 dm_hash_exit(); 1923 dm_hash_exit();
1926} 1924}
1927 1925
diff --git a/drivers/misc/vmw_vmci/vmci_host.c b/drivers/misc/vmw_vmci/vmci_host.c
index a721b5d8a9da..9ec262a52656 100644
--- a/drivers/misc/vmw_vmci/vmci_host.c
+++ b/drivers/misc/vmw_vmci/vmci_host.c
@@ -1031,14 +1031,9 @@ int __init vmci_host_init(void)
1031 1031
1032void __exit vmci_host_exit(void) 1032void __exit vmci_host_exit(void)
1033{ 1033{
1034 int error;
1035
1036 vmci_host_device_initialized = false; 1034 vmci_host_device_initialized = false;
1037 1035
1038 error = misc_deregister(&vmci_host_miscdev); 1036 misc_deregister(&vmci_host_miscdev);
1039 if (error)
1040 pr_warn("Error unregistering character device: %d\n", error);
1041
1042 vmci_ctx_destroy(host_context); 1037 vmci_ctx_destroy(host_context);
1043 vmci_qp_broker_exit(); 1038 vmci_qp_broker_exit();
1044 1039
diff --git a/drivers/rtc/rtc-ds1374.c b/drivers/rtc/rtc-ds1374.c
index 167783fa7ac1..72c933375233 100644
--- a/drivers/rtc/rtc-ds1374.c
+++ b/drivers/rtc/rtc-ds1374.c
@@ -666,9 +666,8 @@ static int ds1374_remove(struct i2c_client *client)
666#ifdef CONFIG_RTC_DRV_DS1374_WDT 666#ifdef CONFIG_RTC_DRV_DS1374_WDT
667 int res; 667 int res;
668 668
669 res = misc_deregister(&ds1374_miscdev); 669 misc_deregister(&ds1374_miscdev);
670 if (!res) 670 ds1374_miscdev.parent = NULL;
671 ds1374_miscdev.parent = NULL;
672 unregister_reboot_notifier(&ds1374_wdt_notifier); 671 unregister_reboot_notifier(&ds1374_wdt_notifier);
673#endif 672#endif
674 673
diff --git a/drivers/staging/android/ashmem.c b/drivers/staging/android/ashmem.c
index c5c037ccf32c..2c75d90b26c8 100644
--- a/drivers/staging/android/ashmem.c
+++ b/drivers/staging/android/ashmem.c
@@ -863,14 +863,9 @@ static int __init ashmem_init(void)
863 863
864static void __exit ashmem_exit(void) 864static void __exit ashmem_exit(void)
865{ 865{
866 int ret;
867
868 unregister_shrinker(&ashmem_shrinker); 866 unregister_shrinker(&ashmem_shrinker);
869 867
870 ret = misc_deregister(&ashmem_misc); 868 misc_deregister(&ashmem_misc);
871 if (unlikely(ret))
872 pr_err("failed to unregister misc device!\n");
873
874 kmem_cache_destroy(ashmem_range_cachep); 869 kmem_cache_destroy(ashmem_range_cachep);
875 kmem_cache_destroy(ashmem_area_cachep); 870 kmem_cache_destroy(ashmem_area_cachep);
876 871
diff --git a/drivers/staging/android/ion/ion_test.c b/drivers/staging/android/ion/ion_test.c
index 7d6e6b6bc894..b8dcf5a26cc4 100644
--- a/drivers/staging/android/ion/ion_test.c
+++ b/drivers/staging/android/ion/ion_test.c
@@ -269,7 +269,8 @@ static int ion_test_remove(struct platform_device *pdev)
269 if (!testdev) 269 if (!testdev)
270 return -ENODATA; 270 return -ENODATA;
271 271
272 return misc_deregister(&testdev->misc); 272 misc_deregister(&testdev->misc);
273 return 0;
273} 274}
274 275
275static struct platform_device *ion_test_pdev; 276static struct platform_device *ion_test_pdev;
diff --git a/drivers/staging/lustre/lustre/libcfs/module.c b/drivers/staging/lustre/lustre/libcfs/module.c
index e60b2e9b9194..e7074006e41b 100644
--- a/drivers/staging/lustre/lustre/libcfs/module.c
+++ b/drivers/staging/lustre/lustre/libcfs/module.c
@@ -467,9 +467,7 @@ static void exit_libcfs_module(void)
467 cfs_crypto_unregister(); 467 cfs_crypto_unregister();
468 cfs_wi_shutdown(); 468 cfs_wi_shutdown();
469 469
470 rc = misc_deregister(&libcfs_dev); 470 misc_deregister(&libcfs_dev);
471 if (rc)
472 CERROR("misc_deregister error %d\n", rc);
473 471
474 cfs_cpu_fini(); 472 cfs_cpu_fini();
475 473
diff --git a/drivers/vhost/scsi.c b/drivers/vhost/scsi.c
index dfcc02c93648..f114a9dbb48f 100644
--- a/drivers/vhost/scsi.c
+++ b/drivers/vhost/scsi.c
@@ -1573,9 +1573,9 @@ static int __init vhost_scsi_register(void)
1573 return misc_register(&vhost_scsi_misc); 1573 return misc_register(&vhost_scsi_misc);
1574} 1574}
1575 1575
1576static int vhost_scsi_deregister(void) 1576static void vhost_scsi_deregister(void)
1577{ 1577{
1578 return misc_deregister(&vhost_scsi_misc); 1578 misc_deregister(&vhost_scsi_misc);
1579} 1579}
1580 1580
1581static char *vhost_scsi_dump_proto_id(struct vhost_scsi_tport *tport) 1581static char *vhost_scsi_dump_proto_id(struct vhost_scsi_tport *tport)
diff --git a/drivers/watchdog/at91rm9200_wdt.c b/drivers/watchdog/at91rm9200_wdt.c
index 41cecb55766c..9ba1153465ae 100644
--- a/drivers/watchdog/at91rm9200_wdt.c
+++ b/drivers/watchdog/at91rm9200_wdt.c
@@ -269,9 +269,8 @@ static int at91wdt_remove(struct platform_device *pdev)
269 if (res) 269 if (res)
270 dev_warn(dev, "failed to unregister restart handler\n"); 270 dev_warn(dev, "failed to unregister restart handler\n");
271 271
272 res = misc_deregister(&at91wdt_miscdev); 272 misc_deregister(&at91wdt_miscdev);
273 if (!res) 273 at91wdt_miscdev.parent = NULL;
274 at91wdt_miscdev.parent = NULL;
275 274
276 return res; 275 return res;
277} 276}
diff --git a/drivers/watchdog/ks8695_wdt.c b/drivers/watchdog/ks8695_wdt.c
index b7ea39b455c8..1e41818a44bc 100644
--- a/drivers/watchdog/ks8695_wdt.c
+++ b/drivers/watchdog/ks8695_wdt.c
@@ -254,13 +254,10 @@ static int ks8695wdt_probe(struct platform_device *pdev)
254 254
255static int ks8695wdt_remove(struct platform_device *pdev) 255static int ks8695wdt_remove(struct platform_device *pdev)
256{ 256{
257 int res; 257 misc_deregister(&ks8695wdt_miscdev);
258 258 ks8695wdt_miscdev.parent = NULL;
259 res = misc_deregister(&ks8695wdt_miscdev);
260 if (!res)
261 ks8695wdt_miscdev.parent = NULL;
262 259
263 return res; 260 return 0;
264} 261}
265 262
266static void ks8695wdt_shutdown(struct platform_device *pdev) 263static void ks8695wdt_shutdown(struct platform_device *pdev)
diff --git a/drivers/watchdog/ts72xx_wdt.c b/drivers/watchdog/ts72xx_wdt.c
index 119beb7f6017..4b541934b6c5 100644
--- a/drivers/watchdog/ts72xx_wdt.c
+++ b/drivers/watchdog/ts72xx_wdt.c
@@ -428,7 +428,8 @@ static int ts72xx_wdt_probe(struct platform_device *pdev)
428 428
429static int ts72xx_wdt_remove(struct platform_device *pdev) 429static int ts72xx_wdt_remove(struct platform_device *pdev)
430{ 430{
431 return misc_deregister(&ts72xx_wdt_miscdev); 431 misc_deregister(&ts72xx_wdt_miscdev);
432 return 0;
432} 433}
433 434
434static struct platform_driver ts72xx_wdt_driver = { 435static struct platform_driver ts72xx_wdt_driver = {
diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c
index cd7ef34d2dce..6bad63379a4c 100644
--- a/fs/btrfs/super.c
+++ b/fs/btrfs/super.c
@@ -2163,8 +2163,7 @@ static int btrfs_interface_init(void)
2163 2163
2164static void btrfs_interface_exit(void) 2164static void btrfs_interface_exit(void)
2165{ 2165{
2166 if (misc_deregister(&btrfs_misc) < 0) 2166 misc_deregister(&btrfs_misc);
2167 printk(KERN_INFO "BTRFS: misc_deregister failed for control device\n");
2168} 2167}
2169 2168
2170static void btrfs_print_info(void) 2169static void btrfs_print_info(void)
diff --git a/fs/dlm/plock.c b/fs/dlm/plock.c
index e0ab3a93eeff..5532f097f6da 100644
--- a/fs/dlm/plock.c
+++ b/fs/dlm/plock.c
@@ -509,7 +509,6 @@ int dlm_plock_init(void)
509 509
510void dlm_plock_exit(void) 510void dlm_plock_exit(void)
511{ 511{
512 if (misc_deregister(&plock_dev_misc) < 0) 512 misc_deregister(&plock_dev_misc);
513 log_print("dlm_plock_exit: misc_deregister failed");
514} 513}
515 514
diff --git a/fs/dlm/user.c b/fs/dlm/user.c
index fb85f32e9eca..75ecc0d3bc85 100644
--- a/fs/dlm/user.c
+++ b/fs/dlm/user.c
@@ -362,18 +362,15 @@ fail:
362 362
363int dlm_device_deregister(struct dlm_ls *ls) 363int dlm_device_deregister(struct dlm_ls *ls)
364{ 364{
365 int error;
366
367 /* The device is not registered. This happens when the lockspace 365 /* The device is not registered. This happens when the lockspace
368 was never used from userspace, or when device_create_lockspace() 366 was never used from userspace, or when device_create_lockspace()
369 calls dlm_release_lockspace() after the register fails. */ 367 calls dlm_release_lockspace() after the register fails. */
370 if (!ls->ls_device.name) 368 if (!ls->ls_device.name)
371 return 0; 369 return 0;
372 370
373 error = misc_deregister(&ls->ls_device); 371 misc_deregister(&ls->ls_device);
374 if (!error) 372 kfree(ls->ls_device.name);
375 kfree(ls->ls_device.name); 373 return 0;
376 return error;
377} 374}
378 375
379static int device_user_purge(struct dlm_user_proc *proc, 376static int device_user_purge(struct dlm_user_proc *proc,
diff --git a/fs/ocfs2/stack_user.c b/fs/ocfs2/stack_user.c
index 2768eb1da2b8..ced70c8139f7 100644
--- a/fs/ocfs2/stack_user.c
+++ b/fs/ocfs2/stack_user.c
@@ -655,14 +655,7 @@ static int ocfs2_control_init(void)
655 655
656static void ocfs2_control_exit(void) 656static void ocfs2_control_exit(void)
657{ 657{
658 int rc; 658 misc_deregister(&ocfs2_control_device);
659
660 rc = misc_deregister(&ocfs2_control_device);
661 if (rc)
662 printk(KERN_ERR
663 "ocfs2: Unable to deregister ocfs2_control device "
664 "(errno %d)\n",
665 -rc);
666} 659}
667 660
668static void fsdlm_lock_ast_wrapper(void *astarg) 661static void fsdlm_lock_ast_wrapper(void *astarg)
diff --git a/include/linux/miscdevice.h b/include/linux/miscdevice.h
index 819077c32690..81f6e427ba6b 100644
--- a/include/linux/miscdevice.h
+++ b/include/linux/miscdevice.h
@@ -67,7 +67,7 @@ struct miscdevice {
67}; 67};
68 68
69extern int misc_register(struct miscdevice *misc); 69extern int misc_register(struct miscdevice *misc);
70extern int misc_deregister(struct miscdevice *misc); 70extern void misc_deregister(struct miscdevice *misc);
71 71
72#define MODULE_ALIAS_MISCDEV(minor) \ 72#define MODULE_ALIAS_MISCDEV(minor) \
73 MODULE_ALIAS("char-major-" __stringify(MISC_MAJOR) \ 73 MODULE_ALIAS("char-major-" __stringify(MISC_MAJOR) \