]> git.hungrycats.org Git - linux/commitdiff
[PATCH] ac97 OSS driver removal fix
authorAndrew Morton <akpm@osdl.org>
Wed, 4 Feb 2004 02:48:30 +0000 (18:48 -0800)
committerLinus Torvalds <torvalds@home.osdl.org>
Wed, 4 Feb 2004 02:48:30 +0000 (18:48 -0800)
From: Andrew Zabolotny <zap@homelink.ru>

ac97_unregister_driver() is nulling out the ->driver field for all codecs.
It should only null the codecs which are using this driver.

sound/oss/ac97_codec.c

index a68052e89e1b56cc072aaf41b03999bd0bfd41c1..4b33c2f8e871d44db38ab7e67182799b7a10252c 100644 (file)
@@ -1428,9 +1428,8 @@ EXPORT_SYMBOL_GPL(ac97_register_driver);
  *     ac97_unregister_driver  -       unregister a codec helper
  *     @driver: Driver handler
  *
- *     Register a handler for codecs matching the codec id. The handler
- *     attach function is called for all present codecs and will be 
- *     called when new codecs are discovered.
+ *     Unregister a handler for codecs matching the codec id. The handler
+ *     remove function is called for all matching codecs.
  */
  
 void ac97_unregister_driver(struct ac97_driver *driver)
@@ -1440,13 +1439,14 @@ void ac97_unregister_driver(struct ac97_driver *driver)
        
        down(&codec_sem);
        list_del_init(&driver->list);
-       
+
        list_for_each(l, &codecs)
        {
                c = list_entry(l, struct ac97_codec, list);
-               if(c->driver == driver)
+               if (c->driver == driver) {
                        driver->remove(c, driver);
-               c->driver = NULL;
+                       c->driver = NULL;
+               }
        }
        
        up(&codec_sem);