[PATCH] ALSA: core: Warn on empty module

Jaroslav Kysela perex at perex.cz
Wed Jun 24 18:33:00 CEST 2020


Dne 24. 06. 20 v 18:13 Pierre-Louis Bossart napsal(a):
> 
> 
> 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.
> 

THIS_MODULE is defined when the object file is created (compile time). We want 
to assign the real module which creates the card here, not "snd_soc_core" 
which is misleading.

						Jaroslav

-- 
Jaroslav Kysela <perex at perex.cz>
Linux Sound Maintainer; ALSA Project; Red Hat, Inc.


More information about the Alsa-devel mailing list