summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>2015-07-30 18:59:57 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2015-08-05 13:35:49 -0400
commitf368ed6088ae9c1fbe1c897bb5f215ce5e63fa1e (patch)
treea9ed27128f04f21ed0f205ec94a1ad0dbf746bb4
parent379e4f756b915bcc35958365e5d1326b3b54efce (diff)
char: make misc_deregister a void function
With well over 200+ users of this api, there are a mere 12 users that actually checked the return value of this function. And all of them really didn't do anything with that information as the system or module was shutting down no matter what. So stop pretending like it matters, and just return void from misc_deregister(). If something goes wrong in the call, you will get a WARNING splat in the syslog so you know how to fix up your driver. Other than that, there's nothing that can go wrong. Cc: Alasdair Kergon <agk@redhat.com> Cc: Neil Brown <neilb@suse.com> Cc: Oleg Drokin <oleg.drokin@intel.com> Cc: Andreas Dilger <andreas.dilger@intel.com> Cc: "Michael S. Tsirkin" <mst@redhat.com> Cc: Wim Van Sebroeck <wim@iguana.be> Cc: Christine Caulfield <ccaulfie@redhat.com> Cc: David Teigland <teigland@redhat.com> Cc: Mark Fasheh <mfasheh@suse.com> Acked-by: Joel Becker <jlbec@evilplan.org> Acked-by: Alexandre Belloni <alexandre.belloni@free-electrons.com> Acked-by: Alessandro Zummo <a.zummo@towertech.it> Acked-by: Mike Snitzer <snitzer@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-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) \