Message ID | 20210219230918.5058-6-pierre-louis.bossart@linux.intel.com |
---|---|
State | Superseded |
Headers | show |
Series | ASoC: samsung: remove cppcheck warnings | expand |
On Fri, Feb 19, 2021 at 05:09:17PM -0600, Pierre-Louis Bossart wrote: > cppcheck warning: > > sound/soc/samsung/tm2_wm5110.c:605:6: style: Variable 'ret' is > reassigned a value before the old one has been > used. [redundantAssignment] > ret = devm_snd_soc_register_component(dev, &tm2_component, > ^ > sound/soc/samsung/tm2_wm5110.c:554:7: note: ret is assigned > ret = of_parse_phandle_with_args(dev->of_node, "i2s-controller", > ^ > sound/soc/samsung/tm2_wm5110.c:605:6: note: ret is overwritten > ret = devm_snd_soc_register_component(dev, &tm2_component, > ^ > > it seems wise to first test the return value before checking if the > returned argument is not null? Actually this is real bug. The args is a stack variable, so it could have junk (uninitialized) therefore args.np could have a non-NULL and random value even though property was missing. Later could trigger invalid pointer dereference. Fixes: 8d1513cef51a ("ASoC: samsung: Add support for HDMI audio on TM2 board") Cc: <stable@vger.kernel.org> > > Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> > --- > sound/soc/samsung/tm2_wm5110.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/sound/soc/samsung/tm2_wm5110.c b/sound/soc/samsung/tm2_wm5110.c > index 9300fef9bf26..da6204248f82 100644 > --- a/sound/soc/samsung/tm2_wm5110.c > +++ b/sound/soc/samsung/tm2_wm5110.c > @@ -553,7 +553,7 @@ static int tm2_probe(struct platform_device *pdev) > > ret = of_parse_phandle_with_args(dev->of_node, "i2s-controller", > cells_name, i, &args); > - if (!args.np) { > + if (ret || !args.np) { Only "if (ret)" because args.np won't be initialized on errors. Best regards, Krzysztof
>> diff --git a/sound/soc/samsung/tm2_wm5110.c b/sound/soc/samsung/tm2_wm5110.c >> index 9300fef9bf26..da6204248f82 100644 >> --- a/sound/soc/samsung/tm2_wm5110.c >> +++ b/sound/soc/samsung/tm2_wm5110.c >> @@ -553,7 +553,7 @@ static int tm2_probe(struct platform_device *pdev) >> >> ret = of_parse_phandle_with_args(dev->of_node, "i2s-controller", >> cells_name, i, &args); >> - if (!args.np) { >> + if (ret || !args.np) { > > Only "if (ret)" because args.np won't be initialized on errors. Thanks Krzysztof for the review, I will make that change in a v2. But just to be clear, there's no need to test args.np then?
diff --git a/sound/soc/samsung/tm2_wm5110.c b/sound/soc/samsung/tm2_wm5110.c index 9300fef9bf26..da6204248f82 100644 --- a/sound/soc/samsung/tm2_wm5110.c +++ b/sound/soc/samsung/tm2_wm5110.c @@ -553,7 +553,7 @@ static int tm2_probe(struct platform_device *pdev) ret = of_parse_phandle_with_args(dev->of_node, "i2s-controller", cells_name, i, &args); - if (!args.np) { + if (ret || !args.np) { dev_err(dev, "i2s-controller property parse error: %d\n", i); ret = -EINVAL; goto dai_node_put;
cppcheck warning: sound/soc/samsung/tm2_wm5110.c:605:6: style: Variable 'ret' is reassigned a value before the old one has been used. [redundantAssignment] ret = devm_snd_soc_register_component(dev, &tm2_component, ^ sound/soc/samsung/tm2_wm5110.c:554:7: note: ret is assigned ret = of_parse_phandle_with_args(dev->of_node, "i2s-controller", ^ sound/soc/samsung/tm2_wm5110.c:605:6: note: ret is overwritten ret = devm_snd_soc_register_component(dev, &tm2_component, ^ it seems wise to first test the return value before checking if the returned argument is not null? Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> --- sound/soc/samsung/tm2_wm5110.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)