[ALSA] Fix Oops at rmmod with CONFIG_SND_VERBOSE_PROCFS=n

Fixed Oops at rmmod with CONFIG_SND_VERBOSE_PROCFS=n.
Add ifdef to struct fields for optimization and better compile
checks.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
Takashi Iwai 2006-04-25 12:56:04 +02:00 committed by Jaroslav Kysela
parent 61fb63c096
commit b7d90a356a
6 changed files with 20 additions and 12 deletions

View file

@ -374,12 +374,14 @@ struct snd_pcm_substream {
/* -- OSS things -- */ /* -- OSS things -- */
struct snd_pcm_oss_substream oss; struct snd_pcm_oss_substream oss;
#endif #endif
#ifdef CONFIG_SND_VERBOSE_PROCFS
struct snd_info_entry *proc_root; struct snd_info_entry *proc_root;
struct snd_info_entry *proc_info_entry; struct snd_info_entry *proc_info_entry;
struct snd_info_entry *proc_hw_params_entry; struct snd_info_entry *proc_hw_params_entry;
struct snd_info_entry *proc_sw_params_entry; struct snd_info_entry *proc_sw_params_entry;
struct snd_info_entry *proc_status_entry; struct snd_info_entry *proc_status_entry;
struct snd_info_entry *proc_prealloc_entry; struct snd_info_entry *proc_prealloc_entry;
#endif
/* misc flags */ /* misc flags */
unsigned int no_mmap_ctrl: 1; unsigned int no_mmap_ctrl: 1;
unsigned int hw_opened: 1; unsigned int hw_opened: 1;
@ -400,12 +402,14 @@ struct snd_pcm_str {
struct snd_pcm_oss_stream oss; struct snd_pcm_oss_stream oss;
#endif #endif
struct snd_pcm_file *files; struct snd_pcm_file *files;
#ifdef CONFIG_SND_VERBOSE_PROCFS
struct snd_info_entry *proc_root; struct snd_info_entry *proc_root;
struct snd_info_entry *proc_info_entry; struct snd_info_entry *proc_info_entry;
#ifdef CONFIG_SND_DEBUG #ifdef CONFIG_SND_PCM_XRUN_DEBUG
unsigned int xrun_debug; /* 0 = disabled, 1 = verbose, 2 = stacktrace */ unsigned int xrun_debug; /* 0 = disabled, 1 = verbose, 2 = stacktrace */
struct snd_info_entry *proc_xrun_debug_entry; struct snd_info_entry *proc_xrun_debug_entry;
#endif #endif
#endif
}; };
struct snd_pcm { struct snd_pcm {

View file

@ -75,7 +75,9 @@ struct snd_pcm_oss_substream {
struct snd_pcm_oss_stream { struct snd_pcm_oss_stream {
struct snd_pcm_oss_setup *setup_list; /* setup list */ struct snd_pcm_oss_setup *setup_list; /* setup list */
struct mutex setup_mutex; struct mutex setup_mutex;
#ifdef CONFIG_SND_VERBOSE_PROCFS
struct snd_info_entry *proc_entry; struct snd_info_entry *proc_entry;
#endif
}; };
struct snd_pcm_oss { struct snd_pcm_oss {

View file

@ -142,7 +142,7 @@ config SND_SUPPORT_OLD_API
config SND_VERBOSE_PROCFS config SND_VERBOSE_PROCFS
bool "Verbose procfs contents" bool "Verbose procfs contents"
depends on SND depends on SND && PROC_FS
default y default y
help help
Say Y here to include code for verbose procfs contents (provides Say Y here to include code for verbose procfs contents (provides
@ -175,7 +175,7 @@ config SND_DEBUG_DETECT
config SND_PCM_XRUN_DEBUG config SND_PCM_XRUN_DEBUG
bool "Enable PCM ring buffer overrun/underrun debugging" bool "Enable PCM ring buffer overrun/underrun debugging"
default n default n
depends on SND_DEBUG depends on SND_DEBUG && SND_VERBOSE_PROCFS
help help
Say Y to enable the PCM ring buffer overrun/underrun debugging. Say Y to enable the PCM ring buffer overrun/underrun debugging.
It is usually not required, but if you have trouble with It is usually not required, but if you have trouble with

View file

@ -2214,7 +2214,7 @@ static int snd_pcm_oss_mmap(struct file *file, struct vm_area_struct *area)
return 0; return 0;
} }
#ifdef CONFIG_PROC_FS #ifdef CONFIG_SND_VERBOSE_PROCFS
/* /*
* /proc interface * /proc interface
*/ */
@ -2368,10 +2368,10 @@ static void snd_pcm_oss_proc_done(struct snd_pcm *pcm)
} }
} }
} }
#else /* !CONFIG_PROC_FS */ #else /* !CONFIG_SND_VERBOSE_PROCFS */
#define snd_pcm_oss_proc_init(pcm) #define snd_pcm_oss_proc_init(pcm)
#define snd_pcm_oss_proc_done(pcm) #define snd_pcm_oss_proc_done(pcm)
#endif /* CONFIG_PROC_FS */ #endif /* CONFIG_SND_VERBOSE_PROCFS */
/* /*
* ENTRY functions * ENTRY functions

View file

@ -142,7 +142,7 @@ static int snd_pcm_control_ioctl(struct snd_card *card,
return -ENOIOCTLCMD; return -ENOIOCTLCMD;
} }
#if defined(CONFIG_PROC_FS) && defined(CONFIG_SND_VERBOSE_PROCFS) #ifdef CONFIG_SND_VERBOSE_PROCFS
#define STATE(v) [SNDRV_PCM_STATE_##v] = #v #define STATE(v) [SNDRV_PCM_STATE_##v] = #v
#define STREAM(v) [SNDRV_PCM_STREAM_##v] = #v #define STREAM(v) [SNDRV_PCM_STREAM_##v] = #v
@ -599,12 +599,12 @@ static int snd_pcm_substream_proc_done(struct snd_pcm_substream *substream)
} }
return 0; return 0;
} }
#else /* !CONFIG_PROC_FS */ #else /* !CONFIG_SND_VERBOSE_PROCFS */
static inline int snd_pcm_stream_proc_init(struct snd_pcm_str *pstr) { return 0; } static inline int snd_pcm_stream_proc_init(struct snd_pcm_str *pstr) { return 0; }
static inline int snd_pcm_stream_proc_done(struct snd_pcm_str *pstr) { return 0; } static inline int snd_pcm_stream_proc_done(struct snd_pcm_str *pstr) { return 0; }
static inline int snd_pcm_substream_proc_init(struct snd_pcm_substream *substream) { return 0; } static inline int snd_pcm_substream_proc_init(struct snd_pcm_substream *substream) { return 0; }
static inline int snd_pcm_substream_proc_done(struct snd_pcm_substream *substream) { return 0; } static inline int snd_pcm_substream_proc_done(struct snd_pcm_substream *substream) { return 0; }
#endif /* CONFIG_PROC_FS */ #endif /* CONFIG_SND_VERBOSE_PROCFS */
/** /**
* snd_pcm_new_stream - create a new PCM stream * snd_pcm_new_stream - create a new PCM stream

View file

@ -100,8 +100,10 @@ static void snd_pcm_lib_preallocate_dma_free(struct snd_pcm_substream *substream
int snd_pcm_lib_preallocate_free(struct snd_pcm_substream *substream) int snd_pcm_lib_preallocate_free(struct snd_pcm_substream *substream)
{ {
snd_pcm_lib_preallocate_dma_free(substream); snd_pcm_lib_preallocate_dma_free(substream);
#ifdef CONFIG_SND_VERBOSE_PROCFS
snd_info_unregister(substream->proc_prealloc_entry); snd_info_unregister(substream->proc_prealloc_entry);
substream->proc_prealloc_entry = NULL; substream->proc_prealloc_entry = NULL;
#endif
return 0; return 0;
} }
@ -124,7 +126,7 @@ int snd_pcm_lib_preallocate_free_for_all(struct snd_pcm *pcm)
return 0; return 0;
} }
#ifdef CONFIG_PROC_FS #ifdef CONFIG_SND_VERBOSE_PROCFS
/* /*
* read callback for prealloc proc file * read callback for prealloc proc file
* *
@ -203,9 +205,9 @@ static inline void preallocate_info_init(struct snd_pcm_substream *substream)
substream->proc_prealloc_entry = entry; substream->proc_prealloc_entry = entry;
} }
#else /* !CONFIG_PROC_FS */ #else /* !CONFIG_SND_VERBOSE_PROCFS */
#define preallocate_info_init(s) #define preallocate_info_init(s)
#endif #endif /* CONFIG_SND_VERBOSE_PROCFS */
/* /*
* pre-allocate the buffer and create a proc file for the substream * pre-allocate the buffer and create a proc file for the substream