[PATCH] pcmcia: release_class

Properly wait for the class refcount to reach zero.

Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>

authored by Dominik Brodowski and committed by Linus Torvalds 378a33a6 3448139b

+15 -1
+15 -1
drivers/pcmcia/cs.c
··· 903 903 } 904 904 905 905 906 + static struct completion pcmcia_unload; 907 + 908 + static void pcmcia_release_socket_class(struct class *data) 909 + { 910 + complete(&pcmcia_unload); 911 + } 912 + 913 + 906 914 struct class pcmcia_socket_class = { 907 915 .name = "pcmcia_socket", 908 916 .hotplug = pcmcia_socket_hotplug, 909 917 .release = pcmcia_release_socket, 918 + .class_release = pcmcia_release_socket_class, 910 919 }; 911 920 EXPORT_SYMBOL(pcmcia_socket_class); 912 921 913 922 914 923 static int __init init_pcmcia_cs(void) 915 924 { 916 - int ret = class_register(&pcmcia_socket_class); 925 + int ret; 926 + 927 + init_completion(&pcmcia_unload); 928 + ret = class_register(&pcmcia_socket_class); 917 929 if (ret) 918 930 return (ret); 919 931 return class_interface_register(&pccard_sysfs_interface); ··· 935 923 { 936 924 class_interface_unregister(&pccard_sysfs_interface); 937 925 class_unregister(&pcmcia_socket_class); 926 + 927 + wait_for_completion(&pcmcia_unload); 938 928 } 939 929 940 930 subsys_initcall(init_pcmcia_cs);