]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
remoteproc: mediatek: Change the snprintf() checking
authorDan Carpenter <dan.carpenter@linaro.org>
Mon, 27 Oct 2025 07:08:51 +0000 (10:08 +0300)
committerMathieu Poirier <mathieu.poirier@linaro.org>
Mon, 10 Nov 2025 17:40:44 +0000 (10:40 -0700)
The snprintf() calls here work but they have several minor style issues:

1) It uses ARRAY_SIZE() which is the number of elements in an array.
   Since were talking about char that works, but it's more common to
   use sizeof() which is the number of bytes.
2) The printf format is "%1d".  The "1" ensures we always print at
   least 1 character but since numbers all have at least 1 digit this
   can be removed.
3) The kernel implementation of snprintf() cannot return negative error
   codes.  Also these particular calls to snprintf() can't return zero
   and the code to handle that zero return is sort of questionable.
4) In the current kernel the only "core_id" we print is "0" but if it
   was more than 9 then the output would be truncated so GCC complains.
   Add an "a >= sizeof(scp_fw_file)" check for output which is too long.

Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Link: https://lore.kernel.org/r/aP8agyKj73bLZrTQ@stanley.mountain
Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
drivers/remoteproc/mtk_scp.c

index 10e3f9eb8cd2b2662992ffc4b5adaf5dfbae4040..db8fd045468d9a53b14b2b24c1ed9f3168d3c05f 100644 (file)
@@ -1127,11 +1127,11 @@ static const char *scp_get_default_fw_path(struct device *dev, int core_id)
                return ERR_PTR(-EINVAL);
 
        if (core_id >= 0)
-               ret = snprintf(scp_fw_file, ARRAY_SIZE(scp_fw_file), "scp_c%1d", core_id);
+               ret = snprintf(scp_fw_file, sizeof(scp_fw_file), "scp_c%d", core_id);
        else
-               ret = snprintf(scp_fw_file, ARRAY_SIZE(scp_fw_file), "scp");
-       if (ret <= 0)
-               return ERR_PTR(ret);
+               ret = snprintf(scp_fw_file, sizeof(scp_fw_file), "scp");
+       if (ret >= sizeof(scp_fw_file))
+               return ERR_PTR(-ENAMETOOLONG);
 
        /* Not using strchr here, as strlen of a const gets optimized by compiler */
        soc = &compatible[strlen("mediatek,")];