ALSA: core: Clean up OSS proc file management
authorTakashi Iwai <tiwai@suse.de>
Thu, 23 Apr 2015 08:56:21 +0000 (10:56 +0200)
committerTakashi Iwai <tiwai@suse.de>
Fri, 24 Apr 2015 15:31:08 +0000 (17:31 +0200)
A few minor cleanups:
- Move the call of snd_info_minor_register() into snd_info_init() so
  that we can call all proc-related stuff in a shot
- Add missing __init prefix to snd_info_minor_register()
- Return an error properly from snd_oss_info_register()
- Drop snd_info_minor_unregister() that is superfluous now

Acked-by: Jaroslav Kysela <perex@perex.cz>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
include/sound/info.h
sound/core/info.c
sound/core/info_oss.c
sound/core/sound.c

index 3e2fda3c75eeda7623e669699ba073fcb97e2533..16269951bafcb74c533b95359f8144bc3cc8cdd6 100644 (file)
@@ -94,10 +94,8 @@ struct snd_info_entry {
 
 #if defined(CONFIG_SND_OSSEMUL) && defined(CONFIG_PROC_FS)
 int snd_info_minor_register(void);
-int snd_info_minor_unregister(void);
 #else
-#define snd_info_minor_register() /* NOP */
-#define snd_info_minor_unregister() /* NOP */
+#define snd_info_minor_register()      0
 #endif
 
 
index f8bdd9b6f322b88ebc1d1e35ebc69a4e736c18fd..c8a413d6cc9b537cb62b281d01ccf775b974170d 100644 (file)
@@ -479,7 +479,8 @@ int __init snd_info_init(void)
        if (snd_info_version_init() < 0 ||
            snd_minor_info_init() < 0 ||
            snd_minor_info_oss_init() < 0 ||
-           snd_card_info_init() < 0)
+           snd_card_info_init() < 0 ||
+           snd_info_minor_register() < 0)
                goto error;
        return 0;
 
index bd4d2c6233c20ba3e41dca751d01f8fbf2ca5b9a..1478c8dfd4739d49399cfc7e324d1901939c87a5 100644 (file)
@@ -35,7 +35,6 @@
 
 static DEFINE_MUTEX(strings);
 static char *snd_sndstat_strings[SNDRV_CARDS][SNDRV_OSS_INFO_DEV_COUNT];
-static struct snd_info_entry *snd_sndstat_proc_entry;
 
 int snd_oss_info_register(int dev, int num, char *string)
 {
@@ -110,25 +109,15 @@ static void snd_sndstat_proc_read(struct snd_info_entry *entry,
        snd_sndstat_show_strings(buffer, "Mixers", SNDRV_OSS_INFO_DEV_MIXERS);
 }
 
-int snd_info_minor_register(void)
+int __init snd_info_minor_register(void)
 {
        struct snd_info_entry *entry;
 
        memset(snd_sndstat_strings, 0, sizeof(snd_sndstat_strings));
-       if ((entry = snd_info_create_module_entry(THIS_MODULE, "sndstat", snd_oss_root)) != NULL) {
-               entry->c.text.read = snd_sndstat_proc_read;
-               if (snd_info_register(entry) < 0) {
-                       snd_info_free_entry(entry);
-                       entry = NULL;
-               }
-       }
-       snd_sndstat_proc_entry = entry;
-       return 0;
-}
-
-int snd_info_minor_unregister(void)
-{
-       snd_info_free_entry(snd_sndstat_proc_entry);
-       snd_sndstat_proc_entry = NULL;
-       return 0;
+       entry = snd_info_create_module_entry(THIS_MODULE, "sndstat",
+                                            snd_oss_root);
+       if (!entry)
+               return -ENOMEM;
+       entry->c.text.read = snd_sndstat_proc_read;
+       return snd_info_register(entry); /* freed in error path */
 }
index 8fc402e4ff3520beab9ba66a8da51e7d43866361..e5d37bd7c226e9ca6f4ff594bf53ca2ea9793e3e 100644 (file)
@@ -409,7 +409,6 @@ static int __init alsa_sound_init(void)
                unregister_chrdev(major, "alsa");
                return -ENOMEM;
        }
-       snd_info_minor_register();
 #ifndef MODULE
        pr_info("Advanced Linux Sound Architecture Driver Initialized.\n");
 #endif
@@ -418,7 +417,6 @@ static int __init alsa_sound_init(void)
 
 static void __exit alsa_sound_exit(void)
 {
-       snd_info_minor_unregister();
        snd_info_done();
        unregister_chrdev(major, "alsa");
 }