Smatch static checker warns: drivers/staging/greybus/audio_codec.c:335 gbaudio_module_update() warn: sscanf doesn't return error codes
The sscanf() function returns the number of successfully matched input items, not a negative error code. Compare the return value directly with the expected number of conversions (3) instead of storing it in 'ret' and returning it as an error code, which leads to returning a positive value on failure.
Reported-by: Dan Carpenter dan.carpenter@oracle.com Closes: https://lore.kernel.org/all/YoOLnDkHgVltyXK7@kili/
Signed-off-by: Abdelnasser Hussein abdelnasserhussein11@gmail.com --- Changes in v3: - Split from the previous v2 patch into a separate patch. - Updated tags to properly credit Dan Carpenter for the smatch warning.
drivers/staging/greybus/audio_codec.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/staging/greybus/audio_codec.c b/drivers/staging/greybus/audio_codec.c index 720aa752e17e..295222ec0f1a 100644 --- a/drivers/staging/greybus/audio_codec.c +++ b/drivers/staging/greybus/audio_codec.c @@ -311,8 +311,7 @@ int gbaudio_module_update(struct gbaudio_codec_info *codec, }
/* parse dai_id from AIF widget's stream_name */ - ret = sscanf(w->sname, "%s %d %s", intf_name, &dai_id, dir); - if (ret < 3) { + if (sscanf(w->sname, "%s %d %s", intf_name, &dai_id, dir) != 3) { dev_err(codec->dev, "Error while parsing dai_id for %s\n", w->name); return -EINVAL; }