[alsa-devel] [PATCH v2] ASoC: Add a sanity check before using dai driver name
The dai driver's name is allowed to be NULL. So add a sanity check for that.
Signed-off-by: Jeffy Chen jeffy.chen@rock-chips.com Reported-by: Donglin Peng dolinux.peng@gmail.com ---
Changes in v2: Keep the oringinal check style.
sound/soc/soc-core.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c index fc1bb2da3e2e..c38c8f844546 100644 --- a/sound/soc/soc-core.c +++ b/sound/soc/soc-core.c @@ -1029,7 +1029,8 @@ struct snd_soc_dai *snd_soc_find_dai( continue; list_for_each_entry(dai, &component->dai_list, list) { if (dlc->dai_name && strcmp(dai->name, dlc->dai_name) - && strcmp(dai->driver->name, dlc->dai_name)) + && (!dai->driver->name + || !strcmp(dai->driver->name, dlc->dai_name)) continue;
return dai;
On Thu, Aug 24, 2017 at 11:34 AM, Jeffy Chen jeffy.chen@rock-chips.com wrote:
list_for_each_entry(dai, &component->dai_list, list) { if (dlc->dai_name && strcmp(dai->name, dlc->dai_name)
&& strcmp(dai->driver->name, dlc->dai_name))
&& (!dai->driver->name
|| !strcmp(dai->driver->name, dlc->dai_name)) continue;
If the dai->driver->name is match with the dlc->dai_name, does it need to continue?
return dai;
Hi Dong,
Thanks for noticing, will send new patch soon :)
On 08/24/2017 11:46 AM, Donglin Peng wrote:
On Thu, Aug 24, 2017 at 11:34 AM, Jeffy Chen jeffy.chen@rock-chips.com wrote:
list_for_each_entry(dai, &component->dai_list, list) { if (dlc->dai_name && strcmp(dai->name, dlc->dai_name)
&& strcmp(dai->driver->name, dlc->dai_name))
&& (!dai->driver->name
|| !strcmp(dai->driver->name, dlc->dai_name)) continue;
If the dai->driver->name is match with the dlc->dai_name, does it need to continue?
hmm, sorry, i did this in a hurry, should setup my board and test it..
return dai;
Hi Jeffy,
[auto build test ERROR on asoc/for-next] [also build test ERROR on next-20170825] [cannot apply to v4.13-rc6] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
url: https://github.com/0day-ci/linux/commits/Jeffy-Chen/ASoC-Add-a-sanity-check-... base: https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next config: x86_64-randconfig-it0-08261958 (attached as .config) compiler: gcc-4.9 (Debian 4.9.4-2) 4.9.4 reproduce: # save the attached .config to linux build tree make ARCH=x86_64
All error/warnings (new ones prefixed by >>):
sound//soc/soc-core.c: In function 'snd_soc_find_dai':
sound//soc/soc-core.c:4321:0: error: unterminated argument list invoking macro "if"
MODULE_ALIAS("platform:soc-audio"); ^
sound//soc/soc-core.c:1031:4: error: expected '(' at end of input
if (dlc->dai_name && strcmp(dai->name, dlc->dai_name) ^
sound//soc/soc-core.c:1031:4: error: expected declaration or statement at end of input sound//soc/soc-core.c:1031:4: error: expected declaration or statement at end of input sound//soc/soc-core.c:1031:4: error: expected declaration or statement at end of input
In file included from include/uapi/linux/stddef.h:1:0, from include/linux/stddef.h:4, from include/uapi/linux/posix_types.h:4, from include/uapi/linux/types.h:13, from include/linux/types.h:5, from include/linux/list.h:4, from include/linux/module.h:9, from sound//soc/soc-core.c:25: sound//soc/soc-core.c: At top level: include/linux/compiler.h:162:4: warning: '______f' is static but declared in inline function 'strcpy' which is not static ______f = { \ ^ include/linux/compiler.h:154:23: note: in expansion of macro '__trace_if' #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) ) ^ include/linux/string.h:390:2: note: in expansion of macro 'if' if (p_size == (size_t)-1 && q_size == (size_t)-1) ^ include/linux/compiler.h:162:4: warning: '______f' is static but declared in inline function 'kmemdup' which is not static ______f = { \ ^ include/linux/compiler.h:154:23: note: in expansion of macro '__trace_if' #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) ) ^ include/linux/string.h:380:2: note: in expansion of macro 'if' if (p_size < size) ^ include/linux/compiler.h:162:4: warning: '______f' is static but declared in inline function 'kmemdup' which is not static ______f = { \ ^ include/linux/compiler.h:154:23: note: in expansion of macro '__trace_if' #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) ) ^ include/linux/string.h:378:2: note: in expansion of macro 'if' if (__builtin_constant_p(size) && p_size < size) ^ include/linux/compiler.h:162:4: warning: '______f' is static but declared in inline function 'memchr_inv' which is not static ______f = { \ ^ include/linux/compiler.h:154:23: note: in expansion of macro '__trace_if' #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) ) ^ include/linux/string.h:369:2: note: in expansion of macro 'if' if (p_size < size) ^ include/linux/compiler.h:162:4: warning: '______f' is static but declared in inline function 'memchr_inv' which is not static ______f = { \ ^ include/linux/compiler.h:154:23: note: in expansion of macro '__trace_if' #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) ) ^ include/linux/string.h:367:2: note: in expansion of macro 'if' if (__builtin_constant_p(size) && p_size < size) ^ include/linux/compiler.h:162:4: warning: '______f' is static but declared in inline function 'memchr' which is not static ______f = { \ ^ include/linux/compiler.h:154:23: note: in expansion of macro '__trace_if' #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) ) ^ include/linux/string.h:358:2: note: in expansion of macro 'if' if (p_size < size) ^ include/linux/compiler.h:162:4: warning: '______f' is static but declared in inline function 'memchr' which is not static ______f = { \ ^ include/linux/compiler.h:154:23: note: in expansion of macro '__trace_if' #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) ) ^ include/linux/string.h:356:2: note: in expansion of macro 'if' if (__builtin_constant_p(size) && p_size < size) ^ include/linux/compiler.h:162:4: warning: '______f' is static but declared in inline function 'memcmp' which is not static ______f = { \ ^ include/linux/compiler.h:154:23: note: in expansion of macro '__trace_if' #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) ) ^ include/linux/string.h:348:2: note: in expansion of macro 'if' if (p_size < size || q_size < size) ^ include/linux/compiler.h:162:4: warning: '______f' is static but declared in inline function 'memcmp' which is not static ______f = { \ ^ include/linux/compiler.h:154:23: note: in expansion of macro '__trace_if' #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) ) ^ include/linux/string.h:345:3: note: in expansion of macro 'if' if (q_size < size) ^ include/linux/compiler.h:162:4: warning: '______f' is static but declared in inline function 'memcmp' which is not static ______f = { \ ^ include/linux/compiler.h:154:23: note: in expansion of macro '__trace_if' #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) ) ^ include/linux/string.h:343:3: note: in expansion of macro 'if' if (p_size < size) ^ include/linux/compiler.h:162:4: warning: '______f' is static but declared in inline function 'memcmp' which is not static -- include/linux/string.h:243:2: note: in expansion of macro 'if' if (p_size <= ret && maxlen != ret) ^ include/linux/compiler.h:162:4: warning: '______f' is static but declared in inline function 'strlen' which is not static ______f = { \ ^ include/linux/compiler.h:154:23: note: in expansion of macro '__trace_if' #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) ) ^ include/linux/string.h:233:2: note: in expansion of macro 'if' if (p_size <= ret) ^ include/linux/compiler.h:162:4: warning: '______f' is static but declared in inline function 'strlen' which is not static ______f = { \ ^ include/linux/compiler.h:154:23: note: in expansion of macro '__trace_if' #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) ) ^ include/linux/string.h:230:2: note: in expansion of macro 'if' if (p_size == (size_t)-1) ^ include/linux/compiler.h:162:4: warning: '______f' is static but declared in inline function 'strcat' which is not static ______f = { \ ^ include/linux/compiler.h:154:23: note: in expansion of macro '__trace_if' #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) ) ^ include/linux/string.h:221:2: note: in expansion of macro 'if' if (strlcat(p, q, p_size) >= p_size) ^ include/linux/compiler.h:162:4: warning: '______f' is static but declared in inline function 'strcat' which is not static ______f = { \ ^ include/linux/compiler.h:154:23: note: in expansion of macro '__trace_if' #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) ) ^ include/linux/string.h:219:2: note: in expansion of macro 'if' if (p_size == (size_t)-1) ^ include/linux/compiler.h:162:4: warning: '______f' is static but declared in inline function 'strncpy' which is not static ______f = { \ ^ include/linux/compiler.h:154:23: note: in expansion of macro '__trace_if' #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) ) ^ include/linux/string.h:211:2: note: in expansion of macro 'if' if (p_size < size) ^ include/linux/compiler.h:162:4: warning: '______f' is static but declared in inline function 'strncpy' which is not static ______f = { \ ^ include/linux/compiler.h:154:23: note: in expansion of macro '__trace_if' #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) ) ^ include/linux/string.h:209:2: note: in expansion of macro 'if' if (__builtin_constant_p(size) && p_size < size) ^ sound//soc/soc-core.c:229:38: warning: 'soc_dev_attr_groups' defined but not used [-Wunused-variable] static const struct attribute_group *soc_dev_attr_groups[] = { ^ sound//soc/soc-core.c:301:13: warning: 'soc_init_component_debugfs' defined but not used [-Wunused-function] static void soc_init_component_debugfs(struct snd_soc_component *component) ^ sound//soc/soc-core.c:334:13: warning: 'soc_cleanup_component_debugfs' defined but not used [-Wunused-function] static void soc_cleanup_component_debugfs(struct snd_soc_component *component) ^ sound//soc/soc-core.c:339:13: warning: 'soc_init_codec_debugfs' defined but not used [-Wunused-function] static void soc_init_codec_debugfs(struct snd_soc_component *component) ^ sound//soc/soc-core.c:468:13: warning: 'soc_init_card_debugfs' defined but not used [-Wunused-function] static void soc_init_card_debugfs(struct snd_soc_card *card) ^ sound//soc/soc-core.c:489:13: warning: 'soc_cleanup_card_debugfs' defined but not used [-Wunused-function] static void soc_cleanup_card_debugfs(struct snd_soc_card *card) ^ sound//soc/soc-core.c:495:13: warning: 'snd_soc_debugfs_init' defined but not used [-Wunused-function] static void snd_soc_debugfs_init(void) ^ sound//soc/soc-core.c:517:13: warning: 'snd_soc_debugfs_exit' defined but not used [-Wunused-function] static void snd_soc_debugfs_exit(void) ^ sound//soc/soc-core.c:554:12: warning: 'snd_soc_rtdcom_add' defined but not used [-Wunused-function] static int snd_soc_rtdcom_add(struct snd_soc_pcm_runtime *rtd, ^ sound//soc/soc-core.c:617:36: warning: 'soc_new_pcm_runtime' defined but not used [-Wunused-function] static struct snd_soc_pcm_runtime *soc_new_pcm_runtime( ^ sound//soc/soc-core.c:648:13: warning: 'soc_add_pcm_runtime' defined but not used [-Wunused-function] static void soc_add_pcm_runtime(struct snd_soc_card *card, ^ sound//soc/soc-core.c:656:13: warning: 'soc_remove_pcm_runtimes' defined but not used [-Wunused-function] static void soc_remove_pcm_runtimes(struct snd_soc_card *card) ^ sound//soc/soc-core.c:682:13: warning: 'codec2codec_close_delayed_work' defined but not used [-Wunused-function] static void codec2codec_close_delayed_work(struct work_struct *work) ^ sound//soc/soc-core.c:981:34: warning: 'soc_find_component' defined but not used [-Wunused-function] static struct snd_soc_component *soc_find_component( ^ sound//soc/soc-core.c: In function 'snd_soc_find_dai':
sound//soc/soc-core.c:1031:4: warning: control reaches end of non-void function [-Wreturn-type]
if (dlc->dai_name && strcmp(dai->name, dlc->dai_name) ^
vim +/if +4321 sound//soc/soc-core.c
db2a4165 Frank Mandarino 2006-10-06 4316 db2a4165 Frank Mandarino 2006-10-06 4317 /* Module information */ d331124d Liam Girdwood 2008-10-12 4318 MODULE_AUTHOR("Liam Girdwood, lrg@slimlogic.co.uk"); db2a4165 Frank Mandarino 2006-10-06 4319 MODULE_DESCRIPTION("ALSA SoC Core"); db2a4165 Frank Mandarino 2006-10-06 4320 MODULE_LICENSE("GPL"); 8b45a209 Kay Sievers 2008-04-14 @4321 MODULE_ALIAS("platform:soc-audio");
:::::: The code at line 4321 was first introduced by commit :::::: 8b45a209935c4b79905182608922736ba0e5579e [ALSA] sound: fix platform driver hotplug/coldplug
:::::: TO: Kay Sievers kay.sievers@vrfy.org :::::: CC: Takashi Iwai tiwai@suse.de
--- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
Hi Mark,
On Sat, Aug 26, 2017 at 10:13 PM, kbuild test robot lkp@intel.com wrote:
Hi Jeffy,
[auto build test ERROR on asoc/for-next] [also build test ERROR on next-20170825] [cannot apply to v4.13-rc6] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
url: https://github.com/0day-ci/linux/commits/Jeffy-Chen/ASoC-Add-a-sanity-check-... base: https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next config: x86_64-randconfig-it0-08261958 (attached as .config) compiler: gcc-4.9 (Debian 4.9.4-2) 4.9.4 reproduce: # save the attached .config to linux build tree make ARCH=x86_64
All error/warnings (new ones prefixed by >>):
sound//soc/soc-core.c: In function 'snd_soc_find_dai':
sound//soc/soc-core.c:4321:0: error: unterminated argument list invoking macro "if"
MODULE_ALIAS("platform:soc-audio"); ^
sound//soc/soc-core.c:1031:4: error: expected '(' at end of input
if (dlc->dai_name && strcmp(dai->name, dlc->dai_name) ^
It seems that the v3 patch should be applied other than v2.
On Sat, Aug 26, 2017 at 11:09:49PM +0800, Donglin Peng wrote:
It seems that the v3 patch should be applied other than v2.
Please send incremental fixes rather than new versions for things that are are already applied.
Hi Jeffy,
On Sun, Aug 27, 2017 at 8:19 PM, Mark Brown broonie@kernel.org wrote:
On Sat, Aug 26, 2017 at 11:09:49PM +0800, Donglin Peng wrote:
It seems that the v3 patch should be applied other than v2.
Please send incremental fixes rather than new versions for things that are are already applied.
You should send a incremental patch rather than v3 patch, because your v2 patch had been applied and caused this issue.
On Sun, Aug 27, 2017 at 09:54:09PM +0800, Donglin Peng wrote:
On Sun, Aug 27, 2017 at 8:19 PM, Mark Brown broonie@kernel.org wrote:
Please send incremental fixes rather than new versions for things that are are already applied.
You should send a incremental patch rather than v3 patch, because your v2 patch had been applied and caused this issue.
Right, so I actually just looked at this and I think the right thing got applied as everything seems to be building fine but I could be confused here.
hi dong,
thanks for noticing, but i think mark've applied the right version.
this amazing robot would help to test all patches, not only the ones already applied :)
在 [1]2017年8月27日 下�9:54,Donglin Peng <[2]dolinux.peng@gmail.com>写�:
Hi Jeffy,
On Sun, Aug 27, [3]2017 at 8:19 PM, Mark Brown <[4]broonie@kernel.org> wrote:
On Sat, Aug 26, [5]2017 at 11:09:49PM +0800, Donglin Peng wrote:
It seems that the v3 patch should be applied other than v2.
Please send incremental fixes rather than new versions for things
that
are are already applied.
You should send a incremental patch rather than v3 patch, because your
v2 patch had been applied and caused this issue.
References
1. tel:2017 2. mailto:dolinux.peng@gmail.com 3. tel:2017 4. mailto:broonie@kernel.org 5. tel:2017
On Sun, Aug 27, 2017 at 10:31:52PM +0800, Jeffy Chen wrote:
This is a HTML only mail and I have a text only client...
hi Mark,
On 08/27/2017 10:34 PM, Mark Brown wrote:
On Sun, Aug 27, 2017 at 10:31:52PM +0800, Jeffy Chen wrote:
This is a HTML only mail and I have a text only client...
sorry, i was replying with my phone, didn't notice it would use html by default...
i think you've applied the right version of patch(v3), and the robot is warning the v2 version :)
On Sun, Aug 27, 2017 at 10:31 PM, Jeffy Chen jeffy.chen@rock-chips.com wrote:
hi dong,
thanks for noticing, but i think mark've applied the right version.
this amazing robot would help to test all patches, not only the ones already applied :)
I also think so.
participants (5)
-
Donglin Peng
-
jeffy
-
Jeffy Chen
-
kbuild test robot
-
Mark Brown