From 1540e0d5d7ca5f577fcb768d86d86b316095cf60 Mon Sep 17 00:00:00 2001 From: Dominik Brodowski Date: Mon, 27 Jun 2005 16:28:54 -0700 Subject: [PATCH] --- yaml --- r: 3811 b: refs/heads/master c: 378a33a686d457fa5a38d6ad134f5385a9cc7860 h: refs/heads/master i: 3809: f32744ee6d584a6d0f9539bea15e279440e7d80f 3807: 8d1898640bb3f0c4a047d5251fe49c9784c05f91 v: v3 --- [refs] | 2 +- trunk/drivers/pcmcia/cs.c | 16 +++++++++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index feb4f98eef09..81ada63d0773 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 3448139b41b9e3b8799eed7d427cd50789dadc3e +refs/heads/master: 378a33a686d457fa5a38d6ad134f5385a9cc7860 diff --git a/trunk/drivers/pcmcia/cs.c b/trunk/drivers/pcmcia/cs.c index 0ff4d6ec8b77..e82859d3227a 100644 --- a/trunk/drivers/pcmcia/cs.c +++ b/trunk/drivers/pcmcia/cs.c @@ -903,17 +903,29 @@ static int pcmcia_socket_hotplug(struct class_device *dev, char **envp, } +static struct completion pcmcia_unload; + +static void pcmcia_release_socket_class(struct class *data) +{ + complete(&pcmcia_unload); +} + + struct class pcmcia_socket_class = { .name = "pcmcia_socket", .hotplug = pcmcia_socket_hotplug, .release = pcmcia_release_socket, + .class_release = pcmcia_release_socket_class, }; EXPORT_SYMBOL(pcmcia_socket_class); static int __init init_pcmcia_cs(void) { - int ret = class_register(&pcmcia_socket_class); + int ret; + + init_completion(&pcmcia_unload); + ret = class_register(&pcmcia_socket_class); if (ret) return (ret); return class_interface_register(&pccard_sysfs_interface); @@ -923,6 +935,8 @@ static void __exit exit_pcmcia_cs(void) { class_interface_unregister(&pccard_sysfs_interface); class_unregister(&pcmcia_socket_class); + + wait_for_completion(&pcmcia_unload); } subsys_initcall(init_pcmcia_cs);