Since we have a full safe control of codec driver bind/unbind, we can lower the safety bar -- the module refcount from the controller driver. This have always annoyed some people because it interferes rmmod in the order of lsmod (due to the reversed dependency).
Signed-off-by: Takashi Iwai tiwai@suse.de --- sound/pci/hda/hda_bind.c | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-)
diff --git a/sound/pci/hda/hda_bind.c b/sound/pci/hda/hda_bind.c index ba1adbf0f85f..529aec82d3b2 100644 --- a/sound/pci/hda/hda_bind.c +++ b/sound/pci/hda/hda_bind.c @@ -91,7 +91,6 @@ static int codec_refresh_name(struct hda_codec *codec, const char *name) static int hda_codec_driver_probe(struct device *dev) { struct hda_codec *codec = dev_to_hda_codec(dev); - struct module *owner = dev->driver->owner; int err;
if (WARN_ON(!codec->preset)) @@ -101,35 +100,27 @@ static int hda_codec_driver_probe(struct device *dev) if (err < 0) goto error;
- if (!try_module_get(owner)) { - err = -EINVAL; - goto error; - } - err = snd_hda_regmap_init(codec); if (err < 0) goto error; err = codec->preset->patch(codec); if (err < 0) - goto error_module; + goto error;
err = snd_hda_codec_build_pcms(codec); if (err < 0) - goto error_module; + goto error; err = snd_hda_codec_build_controls(codec); if (err < 0) - goto error_module; + goto error; if (codec->card->registered) { err = snd_card_register(codec->card); if (err < 0) - goto error_module; + goto error; }
return 0;
- error_module: - module_put(owner); - error: snd_hda_codec_cleanup_for_unbind(codec); snd_hda_regmap_exit(codec); @@ -144,7 +135,6 @@ static int hda_codec_driver_remove(struct device *dev) codec->patch_ops.free(codec); snd_hda_codec_cleanup_for_unbind(codec); snd_hda_regmap_exit(codec); - module_put(dev->driver->owner); return 0; }