From c2d6098c746be53f3932890ecf909a52b5ed90ac Mon Sep 17 00:00:00 2001 From: Andrew Morton Date: Tue, 3 Feb 2004 18:48:30 -0800 Subject: [PATCH] [PATCH] ac97 OSS driver removal fix From: Andrew Zabolotny 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 | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/sound/oss/ac97_codec.c b/sound/oss/ac97_codec.c index a68052e89e1b5..4b33c2f8e871d 100644 --- a/sound/oss/ac97_codec.c +++ b/sound/oss/ac97_codec.c @@ -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); -- 2.53.0