* [alsa-devel] [PATCH] ASoC: dmaengine: Make the pcm->name equal to pcm->id if the name is not set @ 2019-09-06 5:55 Peter Ujfalusi 2019-09-09 10:07 ` [alsa-devel] Applied "ASoC: dmaengine: Make the pcm->name equal to pcm->id if the name is not set" to the asoc tree Mark Brown 2019-09-10 12:07 ` [alsa-devel] [PATCH] ASoC: dmaengine: Make the pcm->name equal to pcm->id if the name is not set Takashi Iwai 0 siblings, 2 replies; 8+ messages in thread From: Peter Ujfalusi @ 2019-09-06 5:55 UTC (permalink / raw) To: broonie, lgirdwood; +Cc: tiwai, alsa-devel, arthur.she Some tools use the snd_pcm_info_get_name() to try to identify PCMs or for other purposes. Currently it is left empty with the dmaengine-pcm, in this case copy the pcm->id string as pcm->name. For example IGT is using this to find the HDMI PCM for testing audio on it. Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com> Reported-by: Arthur She <arthur.she@linaro.org> --- Hi, this was actually reported for 4.14 kernel with omap-pcm (replaced by sdma-pcm in v4.18), since then we only use the generic dmaengine PCM but the same issue applies today. Regards, Peter sound/soc/soc-generic-dmaengine-pcm.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/sound/soc/soc-generic-dmaengine-pcm.c b/sound/soc/soc-generic-dmaengine-pcm.c index 748f5f641002..d93db2c2b527 100644 --- a/sound/soc/soc-generic-dmaengine-pcm.c +++ b/sound/soc/soc-generic-dmaengine-pcm.c @@ -306,6 +306,12 @@ static int dmaengine_pcm_new(struct snd_soc_pcm_runtime *rtd) if (!dmaengine_pcm_can_report_residue(dev, pcm->chan[i])) pcm->flags |= SND_DMAENGINE_PCM_FLAG_NO_RESIDUE; + + if (rtd->pcm->streams[i].pcm->name[0] == '\0') { + strncpy(rtd->pcm->streams[i].pcm->name, + rtd->pcm->streams[i].pcm->id, + sizeof(rtd->pcm->streams[i].pcm->name)); + } } return 0; -- Peter Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki _______________________________________________ Alsa-devel mailing list Alsa-devel@alsa-project.org https://mailman.alsa-project.org/mailman/listinfo/alsa-devel ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [alsa-devel] Applied "ASoC: dmaengine: Make the pcm->name equal to pcm->id if the name is not set" to the asoc tree 2019-09-06 5:55 [alsa-devel] [PATCH] ASoC: dmaengine: Make the pcm->name equal to pcm->id if the name is not set Peter Ujfalusi @ 2019-09-09 10:07 ` Mark Brown 2019-09-10 12:07 ` [alsa-devel] [PATCH] ASoC: dmaengine: Make the pcm->name equal to pcm->id if the name is not set Takashi Iwai 1 sibling, 0 replies; 8+ messages in thread From: Mark Brown @ 2019-09-09 10:07 UTC (permalink / raw) To: Peter Ujfalusi; +Cc: alsa-devel, tiwai, lgirdwood, arthur.she, Mark Brown The patch ASoC: dmaengine: Make the pcm->name equal to pcm->id if the name is not set has been applied to the asoc tree at https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-5.3 All being well this means that it will be integrated into the linux-next tree (usually sometime in the next 24 hours) and sent to Linus during the next merge window (or sooner if it is a bug fix), however if problems are discovered then the patch may be dropped or reverted. You may get further e-mails resulting from automated or manual testing and review of the tree, please engage with people reporting problems and send followup patches addressing any issues that are reported if needed. If any updates are required or you are submitting further changes they should be sent as incremental updates against current git, existing patches will not be replaced. Please add any relevant lists and maintainers to the CCs when replying to this mail. Thanks, Mark From 2ec42f3147e1610716f184b02e65d7f493eed925 Mon Sep 17 00:00:00 2001 From: Peter Ujfalusi <peter.ujfalusi@ti.com> Date: Fri, 6 Sep 2019 08:55:24 +0300 Subject: [PATCH] ASoC: dmaengine: Make the pcm->name equal to pcm->id if the name is not set Some tools use the snd_pcm_info_get_name() to try to identify PCMs or for other purposes. Currently it is left empty with the dmaengine-pcm, in this case copy the pcm->id string as pcm->name. For example IGT is using this to find the HDMI PCM for testing audio on it. Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com> Reported-by: Arthur She <arthur.she@linaro.org> Link: https://lore.kernel.org/r/20190906055524.7393-1-peter.ujfalusi@ti.com Signed-off-by: Mark Brown <broonie@kernel.org> --- sound/soc/soc-generic-dmaengine-pcm.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/sound/soc/soc-generic-dmaengine-pcm.c b/sound/soc/soc-generic-dmaengine-pcm.c index 748f5f641002..d93db2c2b527 100644 --- a/sound/soc/soc-generic-dmaengine-pcm.c +++ b/sound/soc/soc-generic-dmaengine-pcm.c @@ -306,6 +306,12 @@ static int dmaengine_pcm_new(struct snd_soc_pcm_runtime *rtd) if (!dmaengine_pcm_can_report_residue(dev, pcm->chan[i])) pcm->flags |= SND_DMAENGINE_PCM_FLAG_NO_RESIDUE; + + if (rtd->pcm->streams[i].pcm->name[0] == '\0') { + strncpy(rtd->pcm->streams[i].pcm->name, + rtd->pcm->streams[i].pcm->id, + sizeof(rtd->pcm->streams[i].pcm->name)); + } } return 0; -- 2.20.1 _______________________________________________ Alsa-devel mailing list Alsa-devel@alsa-project.org https://mailman.alsa-project.org/mailman/listinfo/alsa-devel ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [alsa-devel] [PATCH] ASoC: dmaengine: Make the pcm->name equal to pcm->id if the name is not set 2019-09-06 5:55 [alsa-devel] [PATCH] ASoC: dmaengine: Make the pcm->name equal to pcm->id if the name is not set Peter Ujfalusi 2019-09-09 10:07 ` [alsa-devel] Applied "ASoC: dmaengine: Make the pcm->name equal to pcm->id if the name is not set" to the asoc tree Mark Brown @ 2019-09-10 12:07 ` Takashi Iwai 2019-09-10 14:23 ` Peter Ujfalusi 2019-09-11 7:22 ` Peter Ujfalusi 1 sibling, 2 replies; 8+ messages in thread From: Takashi Iwai @ 2019-09-10 12:07 UTC (permalink / raw) To: Peter Ujfalusi; +Cc: alsa-devel, broonie, lgirdwood, arthur.she On Fri, 06 Sep 2019 07:55:24 +0200, Peter Ujfalusi wrote: > > Some tools use the snd_pcm_info_get_name() to try to identify PCMs or for > other purposes. > > Currently it is left empty with the dmaengine-pcm, in this case copy the > pcm->id string as pcm->name. > > For example IGT is using this to find the HDMI PCM for testing audio on it. > > Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com> > Reported-by: Arthur She <arthur.she@linaro.org> > --- > Hi, > > this was actually reported for 4.14 kernel with omap-pcm (replaced by sdma-pcm > in v4.18), since then we only use the generic dmaengine PCM but the same issue > applies today. > > Regards, > Peter > > sound/soc/soc-generic-dmaengine-pcm.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/sound/soc/soc-generic-dmaengine-pcm.c b/sound/soc/soc-generic-dmaengine-pcm.c > index 748f5f641002..d93db2c2b527 100644 > --- a/sound/soc/soc-generic-dmaengine-pcm.c > +++ b/sound/soc/soc-generic-dmaengine-pcm.c > @@ -306,6 +306,12 @@ static int dmaengine_pcm_new(struct snd_soc_pcm_runtime *rtd) > > if (!dmaengine_pcm_can_report_residue(dev, pcm->chan[i])) > pcm->flags |= SND_DMAENGINE_PCM_FLAG_NO_RESIDUE; > + > + if (rtd->pcm->streams[i].pcm->name[0] == '\0') { > + strncpy(rtd->pcm->streams[i].pcm->name, > + rtd->pcm->streams[i].pcm->id, > + sizeof(rtd->pcm->streams[i].pcm->name)); > + } Any reason to use strncpy() instead of strscpy()? After merging Mark's branch, I got a compile warning like: sound/soc/soc-generic-dmaengine-pcm.c:311:4: warning: 'strncpy' accessing 80 bytes at offsets 88 and 24 may overlap up to 0 bytes at offset [9223372036854775807, -9223372036854775808] [-Wrestrict] Takashi > > return 0; > -- > Peter > > Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. > Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki > > _______________________________________________ > Alsa-devel mailing list > Alsa-devel@alsa-project.org > https://mailman.alsa-project.org/mailman/listinfo/alsa-devel > _______________________________________________ Alsa-devel mailing list Alsa-devel@alsa-project.org https://mailman.alsa-project.org/mailman/listinfo/alsa-devel ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [alsa-devel] [PATCH] ASoC: dmaengine: Make the pcm->name equal to pcm->id if the name is not set 2019-09-10 12:07 ` [alsa-devel] [PATCH] ASoC: dmaengine: Make the pcm->name equal to pcm->id if the name is not set Takashi Iwai @ 2019-09-10 14:23 ` Peter Ujfalusi 2019-09-10 14:46 ` Takashi Iwai 2019-09-11 7:22 ` Peter Ujfalusi 1 sibling, 1 reply; 8+ messages in thread From: Peter Ujfalusi @ 2019-09-10 14:23 UTC (permalink / raw) To: Takashi Iwai; +Cc: alsa-devel, broonie, lgirdwood, arthur.she On 10/09/2019 15.07, Takashi Iwai wrote: > On Fri, 06 Sep 2019 07:55:24 +0200, > Peter Ujfalusi wrote: >> >> Some tools use the snd_pcm_info_get_name() to try to identify PCMs or for >> other purposes. >> >> Currently it is left empty with the dmaengine-pcm, in this case copy the >> pcm->id string as pcm->name. >> >> For example IGT is using this to find the HDMI PCM for testing audio on it. >> >> Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com> >> Reported-by: Arthur She <arthur.she@linaro.org> >> --- >> Hi, >> >> this was actually reported for 4.14 kernel with omap-pcm (replaced by sdma-pcm >> in v4.18), since then we only use the generic dmaengine PCM but the same issue >> applies today. >> >> Regards, >> Peter >> >> sound/soc/soc-generic-dmaengine-pcm.c | 6 ++++++ >> 1 file changed, 6 insertions(+) >> >> diff --git a/sound/soc/soc-generic-dmaengine-pcm.c b/sound/soc/soc-generic-dmaengine-pcm.c >> index 748f5f641002..d93db2c2b527 100644 >> --- a/sound/soc/soc-generic-dmaengine-pcm.c >> +++ b/sound/soc/soc-generic-dmaengine-pcm.c >> @@ -306,6 +306,12 @@ static int dmaengine_pcm_new(struct snd_soc_pcm_runtime *rtd) >> >> if (!dmaengine_pcm_can_report_residue(dev, pcm->chan[i])) >> pcm->flags |= SND_DMAENGINE_PCM_FLAG_NO_RESIDUE; >> + >> + if (rtd->pcm->streams[i].pcm->name[0] == '\0') { >> + strncpy(rtd->pcm->streams[i].pcm->name, >> + rtd->pcm->streams[i].pcm->id, >> + sizeof(rtd->pcm->streams[i].pcm->name)); >> + } > > Any reason to use strncpy() instead of strscpy()? > After merging Mark's branch, I got a compile warning like: > sound/soc/soc-generic-dmaengine-pcm.c:311:4: warning: 'strncpy' > accessing 80 bytes at offsets 88 and 24 may overlap up to 0 bytes at > offset [9223372036854775807, -9223372036854775808] [-Wrestrict] I have not seen such a warning. 'may overlap up to 0 bytes' ? snd_pcm_info { ... unsigned char id[64]; /* ID (user selectable) */ unsigned char name[80]; /* name of this device */ unsigned char subname[32]; /* subdevice name */ ... }; and strncpy() supposed to be something like this: char * strncpy(char *dest, const char *src, size_t n) { size_t i; for (i = 0; i < n && src[i] != '\0'; i++) dest[i] = src[i]; for ( ; i < n; i++) dest[i] = '\0'; return dest; } I can see if I can get my compilers to show the warning and try strscpy() if it helps on it. > > > Takashi > >> >> return 0; >> -- >> Peter >> >> Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. >> Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki >> >> _______________________________________________ >> Alsa-devel mailing list >> Alsa-devel@alsa-project.org >> https://mailman.alsa-project.org/mailman/listinfo/alsa-devel >> - Péter Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki _______________________________________________ Alsa-devel mailing list Alsa-devel@alsa-project.org https://mailman.alsa-project.org/mailman/listinfo/alsa-devel ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [alsa-devel] [PATCH] ASoC: dmaengine: Make the pcm->name equal to pcm->id if the name is not set 2019-09-10 14:23 ` Peter Ujfalusi @ 2019-09-10 14:46 ` Takashi Iwai 2019-09-10 14:50 ` Takashi Iwai 0 siblings, 1 reply; 8+ messages in thread From: Takashi Iwai @ 2019-09-10 14:46 UTC (permalink / raw) To: Peter Ujfalusi; +Cc: alsa-devel, broonie, lgirdwood, arthur.she On Tue, 10 Sep 2019 16:23:59 +0200, Peter Ujfalusi wrote: > > > > On 10/09/2019 15.07, Takashi Iwai wrote: > > On Fri, 06 Sep 2019 07:55:24 +0200, > > Peter Ujfalusi wrote: > >> > >> Some tools use the snd_pcm_info_get_name() to try to identify PCMs or for > >> other purposes. > >> > >> Currently it is left empty with the dmaengine-pcm, in this case copy the > >> pcm->id string as pcm->name. > >> > >> For example IGT is using this to find the HDMI PCM for testing audio on it. > >> > >> Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com> > >> Reported-by: Arthur She <arthur.she@linaro.org> > >> --- > >> Hi, > >> > >> this was actually reported for 4.14 kernel with omap-pcm (replaced by sdma-pcm > >> in v4.18), since then we only use the generic dmaengine PCM but the same issue > >> applies today. > >> > >> Regards, > >> Peter > >> > >> sound/soc/soc-generic-dmaengine-pcm.c | 6 ++++++ > >> 1 file changed, 6 insertions(+) > >> > >> diff --git a/sound/soc/soc-generic-dmaengine-pcm.c b/sound/soc/soc-generic-dmaengine-pcm.c > >> index 748f5f641002..d93db2c2b527 100644 > >> --- a/sound/soc/soc-generic-dmaengine-pcm.c > >> +++ b/sound/soc/soc-generic-dmaengine-pcm.c > >> @@ -306,6 +306,12 @@ static int dmaengine_pcm_new(struct snd_soc_pcm_runtime *rtd) > >> > >> if (!dmaengine_pcm_can_report_residue(dev, pcm->chan[i])) > >> pcm->flags |= SND_DMAENGINE_PCM_FLAG_NO_RESIDUE; > >> + > >> + if (rtd->pcm->streams[i].pcm->name[0] == '\0') { > >> + strncpy(rtd->pcm->streams[i].pcm->name, > >> + rtd->pcm->streams[i].pcm->id, > >> + sizeof(rtd->pcm->streams[i].pcm->name)); > >> + } > > > > Any reason to use strncpy() instead of strscpy()? > > After merging Mark's branch, I got a compile warning like: > > sound/soc/soc-generic-dmaengine-pcm.c:311:4: warning: 'strncpy' > > accessing 80 bytes at offsets 88 and 24 may overlap up to 0 bytes at > > offset [9223372036854775807, -9223372036854775808] [-Wrestrict] > > I have not seen such a warning. > 'may overlap up to 0 bytes' ? > snd_pcm_info { > ... > unsigned char id[64]; /* ID (user selectable) */ > unsigned char name[80]; /* name of this device */ > unsigned char subname[32]; /* subdevice name */ > ... > }; > > and strncpy() supposed to be something like this: > char * strncpy(char *dest, const char *src, size_t n) > { > size_t i; > > for (i = 0; i < n && src[i] != '\0'; i++) > dest[i] = src[i]; > for ( ; i < n; i++) > dest[i] = '\0'; > > return dest; > } > > I can see if I can get my compilers to show the warning and try > strscpy() if it helps on it. strncpy() doesn't guarantee the string termination if you pass the exact buffer size. Better to use strscpy() in such a case. thanks, Takashi _______________________________________________ Alsa-devel mailing list Alsa-devel@alsa-project.org https://mailman.alsa-project.org/mailman/listinfo/alsa-devel ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [alsa-devel] [PATCH] ASoC: dmaengine: Make the pcm->name equal to pcm->id if the name is not set 2019-09-10 14:46 ` Takashi Iwai @ 2019-09-10 14:50 ` Takashi Iwai 0 siblings, 0 replies; 8+ messages in thread From: Takashi Iwai @ 2019-09-10 14:50 UTC (permalink / raw) To: Peter Ujfalusi; +Cc: alsa-devel, broonie, lgirdwood, arthur.she On Tue, 10 Sep 2019 16:46:04 +0200, Takashi Iwai wrote: > > On Tue, 10 Sep 2019 16:23:59 +0200, > Peter Ujfalusi wrote: > > > > > > > > On 10/09/2019 15.07, Takashi Iwai wrote: > > > On Fri, 06 Sep 2019 07:55:24 +0200, > > > Peter Ujfalusi wrote: > > >> > > >> Some tools use the snd_pcm_info_get_name() to try to identify PCMs or for > > >> other purposes. > > >> > > >> Currently it is left empty with the dmaengine-pcm, in this case copy the > > >> pcm->id string as pcm->name. > > >> > > >> For example IGT is using this to find the HDMI PCM for testing audio on it. > > >> > > >> Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com> > > >> Reported-by: Arthur She <arthur.she@linaro.org> > > >> --- > > >> Hi, > > >> > > >> this was actually reported for 4.14 kernel with omap-pcm (replaced by sdma-pcm > > >> in v4.18), since then we only use the generic dmaengine PCM but the same issue > > >> applies today. > > >> > > >> Regards, > > >> Peter > > >> > > >> sound/soc/soc-generic-dmaengine-pcm.c | 6 ++++++ > > >> 1 file changed, 6 insertions(+) > > >> > > >> diff --git a/sound/soc/soc-generic-dmaengine-pcm.c b/sound/soc/soc-generic-dmaengine-pcm.c > > >> index 748f5f641002..d93db2c2b527 100644 > > >> --- a/sound/soc/soc-generic-dmaengine-pcm.c > > >> +++ b/sound/soc/soc-generic-dmaengine-pcm.c > > >> @@ -306,6 +306,12 @@ static int dmaengine_pcm_new(struct snd_soc_pcm_runtime *rtd) > > >> > > >> if (!dmaengine_pcm_can_report_residue(dev, pcm->chan[i])) > > >> pcm->flags |= SND_DMAENGINE_PCM_FLAG_NO_RESIDUE; > > >> + > > >> + if (rtd->pcm->streams[i].pcm->name[0] == '\0') { > > >> + strncpy(rtd->pcm->streams[i].pcm->name, > > >> + rtd->pcm->streams[i].pcm->id, > > >> + sizeof(rtd->pcm->streams[i].pcm->name)); > > >> + } > > > > > > Any reason to use strncpy() instead of strscpy()? > > > After merging Mark's branch, I got a compile warning like: > > > sound/soc/soc-generic-dmaengine-pcm.c:311:4: warning: 'strncpy' > > > accessing 80 bytes at offsets 88 and 24 may overlap up to 0 bytes at > > > offset [9223372036854775807, -9223372036854775808] [-Wrestrict] > > > > I have not seen such a warning. > > 'may overlap up to 0 bytes' ? > > snd_pcm_info { > > ... > > unsigned char id[64]; /* ID (user selectable) */ > > unsigned char name[80]; /* name of this device */ > > unsigned char subname[32]; /* subdevice name */ > > ... > > }; > > > > and strncpy() supposed to be something like this: > > char * strncpy(char *dest, const char *src, size_t n) > > { > > size_t i; > > > > for (i = 0; i < n && src[i] != '\0'; i++) > > dest[i] = src[i]; > > for ( ; i < n; i++) > > dest[i] = '\0'; > > > > return dest; > > } > > > > I can see if I can get my compilers to show the warning and try > > strscpy() if it helps on it. > > strncpy() doesn't guarantee the string termination if you pass the > exact buffer size. Better to use strscpy() in such a case. On the second thought, if pcm->id isn't NULL-terminated, it would result in OOB access. So, if strncpy() usage is just to guarantee for the zero-fill, that's OK, to ignore as a possibly spurious old gcc warning... Takashi _______________________________________________ Alsa-devel mailing list Alsa-devel@alsa-project.org https://mailman.alsa-project.org/mailman/listinfo/alsa-devel ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [alsa-devel] [PATCH] ASoC: dmaengine: Make the pcm->name equal to pcm->id if the name is not set 2019-09-10 12:07 ` [alsa-devel] [PATCH] ASoC: dmaengine: Make the pcm->name equal to pcm->id if the name is not set Takashi Iwai 2019-09-10 14:23 ` Peter Ujfalusi @ 2019-09-11 7:22 ` Peter Ujfalusi 2019-09-11 7:46 ` Takashi Iwai 1 sibling, 1 reply; 8+ messages in thread From: Peter Ujfalusi @ 2019-09-11 7:22 UTC (permalink / raw) To: Takashi Iwai; +Cc: alsa-devel, broonie, lgirdwood, arthur.she On 10/09/2019 15.07, Takashi Iwai wrote: > On Fri, 06 Sep 2019 07:55:24 +0200, > Peter Ujfalusi wrote: >> >> Some tools use the snd_pcm_info_get_name() to try to identify PCMs or for >> other purposes. >> >> Currently it is left empty with the dmaengine-pcm, in this case copy the >> pcm->id string as pcm->name. >> >> For example IGT is using this to find the HDMI PCM for testing audio on it. >> >> Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com> >> Reported-by: Arthur She <arthur.she@linaro.org> >> --- >> Hi, >> >> this was actually reported for 4.14 kernel with omap-pcm (replaced by sdma-pcm >> in v4.18), since then we only use the generic dmaengine PCM but the same issue >> applies today. >> >> Regards, >> Peter >> >> sound/soc/soc-generic-dmaengine-pcm.c | 6 ++++++ >> 1 file changed, 6 insertions(+) >> >> diff --git a/sound/soc/soc-generic-dmaengine-pcm.c b/sound/soc/soc-generic-dmaengine-pcm.c >> index 748f5f641002..d93db2c2b527 100644 >> --- a/sound/soc/soc-generic-dmaengine-pcm.c >> +++ b/sound/soc/soc-generic-dmaengine-pcm.c >> @@ -306,6 +306,12 @@ static int dmaengine_pcm_new(struct snd_soc_pcm_runtime *rtd) >> >> if (!dmaengine_pcm_can_report_residue(dev, pcm->chan[i])) >> pcm->flags |= SND_DMAENGINE_PCM_FLAG_NO_RESIDUE; >> + >> + if (rtd->pcm->streams[i].pcm->name[0] == '\0') { >> + strncpy(rtd->pcm->streams[i].pcm->name, >> + rtd->pcm->streams[i].pcm->id, >> + sizeof(rtd->pcm->streams[i].pcm->name)); >> + } > > Any reason to use strncpy() instead of strscpy()? > After merging Mark's branch, I got a compile warning like: > sound/soc/soc-generic-dmaengine-pcm.c:311:4: warning: 'strncpy' > accessing 80 bytes at offsets 88 and 24 may overlap up to 0 bytes at > offset [9223372036854775807, -9223372036854775808] [-Wrestrict] fwiw I run it again with sparse and it only reports these: CHECK sound/soc/soc-generic-dmaengine-pcm.c sound/soc/soc-generic-dmaengine-pcm.c:177:42: warning: restricted snd_pcm_format_t degrades to integer sound/soc/soc-generic-dmaengine-pcm.c:177:47: warning: restricted snd_pcm_format_t degrades to integer sound/soc/soc-generic-dmaengine-pcm.c:177:71: warning: restricted snd_pcm_format_t degrades to integer CC sound/soc/soc-generic-dmaengine-pcm.o gcc 6.4.0...9.2.0 sparse 0.6.0 > > > Takashi > >> >> return 0; >> -- >> Peter >> >> Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. >> Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki >> >> _______________________________________________ >> Alsa-devel mailing list >> Alsa-devel@alsa-project.org >> https://mailman.alsa-project.org/mailman/listinfo/alsa-devel >> - Péter Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki _______________________________________________ Alsa-devel mailing list Alsa-devel@alsa-project.org https://mailman.alsa-project.org/mailman/listinfo/alsa-devel ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [alsa-devel] [PATCH] ASoC: dmaengine: Make the pcm->name equal to pcm->id if the name is not set 2019-09-11 7:22 ` Peter Ujfalusi @ 2019-09-11 7:46 ` Takashi Iwai 0 siblings, 0 replies; 8+ messages in thread From: Takashi Iwai @ 2019-09-11 7:46 UTC (permalink / raw) To: Peter Ujfalusi; +Cc: alsa-devel, broonie, lgirdwood, arthur.she On Wed, 11 Sep 2019 09:22:53 +0200, Peter Ujfalusi wrote: > > > > On 10/09/2019 15.07, Takashi Iwai wrote: > > On Fri, 06 Sep 2019 07:55:24 +0200, > > Peter Ujfalusi wrote: > >> > >> Some tools use the snd_pcm_info_get_name() to try to identify PCMs or for > >> other purposes. > >> > >> Currently it is left empty with the dmaengine-pcm, in this case copy the > >> pcm->id string as pcm->name. > >> > >> For example IGT is using this to find the HDMI PCM for testing audio on it. > >> > >> Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com> > >> Reported-by: Arthur She <arthur.she@linaro.org> > >> --- > >> Hi, > >> > >> this was actually reported for 4.14 kernel with omap-pcm (replaced by sdma-pcm > >> in v4.18), since then we only use the generic dmaengine PCM but the same issue > >> applies today. > >> > >> Regards, > >> Peter > >> > >> sound/soc/soc-generic-dmaengine-pcm.c | 6 ++++++ > >> 1 file changed, 6 insertions(+) > >> > >> diff --git a/sound/soc/soc-generic-dmaengine-pcm.c b/sound/soc/soc-generic-dmaengine-pcm.c > >> index 748f5f641002..d93db2c2b527 100644 > >> --- a/sound/soc/soc-generic-dmaengine-pcm.c > >> +++ b/sound/soc/soc-generic-dmaengine-pcm.c > >> @@ -306,6 +306,12 @@ static int dmaengine_pcm_new(struct snd_soc_pcm_runtime *rtd) > >> > >> if (!dmaengine_pcm_can_report_residue(dev, pcm->chan[i])) > >> pcm->flags |= SND_DMAENGINE_PCM_FLAG_NO_RESIDUE; > >> + > >> + if (rtd->pcm->streams[i].pcm->name[0] == '\0') { > >> + strncpy(rtd->pcm->streams[i].pcm->name, > >> + rtd->pcm->streams[i].pcm->id, > >> + sizeof(rtd->pcm->streams[i].pcm->name)); > >> + } > > > > Any reason to use strncpy() instead of strscpy()? > > After merging Mark's branch, I got a compile warning like: > > sound/soc/soc-generic-dmaengine-pcm.c:311:4: warning: 'strncpy' > > accessing 80 bytes at offsets 88 and 24 may overlap up to 0 bytes at > > offset [9223372036854775807, -9223372036854775808] [-Wrestrict] > > fwiw I run it again with sparse and it only reports these: > CHECK sound/soc/soc-generic-dmaengine-pcm.c > sound/soc/soc-generic-dmaengine-pcm.c:177:42: warning: restricted snd_pcm_format_t degrades to integer > sound/soc/soc-generic-dmaengine-pcm.c:177:47: warning: restricted snd_pcm_format_t degrades to integer > sound/soc/soc-generic-dmaengine-pcm.c:177:71: warning: restricted snd_pcm_format_t degrades to integer > CC sound/soc/soc-generic-dmaengine-pcm.o > > gcc 6.4.0...9.2.0 > sparse 0.6.0 That happens only with some cross-build on my build tests, so it must be a pretty minor issue. But in general, almost all strncpy() use case can be replaced gracefully with a safer function, either strscpy() or strscpy_pad(). IOW, if you see strncpy(), the patch looks doubtful :) thanks, Takashi > > > > > > > Takashi > > > >> > >> return 0; > >> -- > >> Peter > >> > >> Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. > >> Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki > >> > >> _______________________________________________ > >> Alsa-devel mailing list > >> Alsa-devel@alsa-project.org > >> https://mailman.alsa-project.org/mailman/listinfo/alsa-devel > >> > > - Péter > > Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki > _______________________________________________ Alsa-devel mailing list Alsa-devel@alsa-project.org https://mailman.alsa-project.org/mailman/listinfo/alsa-devel ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2019-09-11 7:47 UTC | newest] Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2019-09-06 5:55 [alsa-devel] [PATCH] ASoC: dmaengine: Make the pcm->name equal to pcm->id if the name is not set Peter Ujfalusi 2019-09-09 10:07 ` [alsa-devel] Applied "ASoC: dmaengine: Make the pcm->name equal to pcm->id if the name is not set" to the asoc tree Mark Brown 2019-09-10 12:07 ` [alsa-devel] [PATCH] ASoC: dmaengine: Make the pcm->name equal to pcm->id if the name is not set Takashi Iwai 2019-09-10 14:23 ` Peter Ujfalusi 2019-09-10 14:46 ` Takashi Iwai 2019-09-10 14:50 ` Takashi Iwai 2019-09-11 7:22 ` Peter Ujfalusi 2019-09-11 7:46 ` Takashi Iwai
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).