[PATCH] ALSA: core: Warn on empty module
Pierre-Louis Bossart
pierre-louis.bossart at linux.intel.com
Wed Jun 24 18:13:16 CEST 2020
On 6/24/20 11:03 AM, Takashi Iwai wrote:
> The module argument passed to snd_card_new() must be a valid non-NULL
> pointer when the module support is enabled. Since ASoC driver passes
> the argument from each snd_soc_card definition, one may forget to set
> the owner field and lead to a NULL module easily.
>
> For catching such an overlook, add a WARN_ON() in snd_card_new().
> Also, put the card->module assignment in the ifdef block for a very
> minor optimization.
>
> Signed-off-by: Takashi Iwai <tiwai at suse.de>
> ---
> sound/core/init.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/sound/core/init.c b/sound/core/init.c
> index b02a99766351..0478847ba2b8 100644
> --- a/sound/core/init.c
> +++ b/sound/core/init.c
> @@ -203,7 +203,10 @@ int snd_card_new(struct device *parent, int idx, const char *xid,
> mutex_unlock(&snd_card_mutex);
> card->dev = parent;
> card->number = idx;
> +#ifdef MODULE
> + WARN_ON(!module);
> card->module = module;
> +#endif
> INIT_LIST_HEAD(&card->devices);
> init_rwsem(&card->controls_rwsem);
> rwlock_init(&card->ctl_files_rwlock);
Would it make sense to also change the ASoC code to use THIS_MODULE
instead of card->owner?
/* card bind complete so register a sound card */
ret = snd_card_new(card->dev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1,
card->owner, 0, &card->snd_card);
A quick grep shows we are setting .owner = THIS_MODULE pretty much all
the time for machine drivers.
More information about the Alsa-devel
mailing list