]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
crypto: hifn_795x - Silence gcc format-truncation false positive warnings
authorHerbert Xu <herbert@gondor.apana.org.au>
Thu, 12 Oct 2023 15:08:17 +0000 (23:08 +0800)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 20 Oct 2023 05:39:26 +0000 (13:39 +0800)
The heuristics used by gcc triggers false positive truncation
warnings in hifn_alg_alloc.  The warning triggered by the strings
here are clearly false positives (see
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95755).

Add checks on snprintf calls to silence these warnings, including
the one for cra_driver_name even though it does not currently trigger
a gcc warning.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/hifn_795x.c

index 8e4a49b7ab4fba967fd94b69b8a3802dc0191406..7bddc3c786c1a7f3ceead4114e53ea1f8d4f6532 100644 (file)
@@ -2393,9 +2393,13 @@ static int hifn_alg_alloc(struct hifn_device *dev, const struct hifn_alg_templat
        alg->alg = t->skcipher;
        alg->alg.init = hifn_init_tfm;
 
-       snprintf(alg->alg.base.cra_name, CRYPTO_MAX_ALG_NAME, "%s", t->name);
-       snprintf(alg->alg.base.cra_driver_name, CRYPTO_MAX_ALG_NAME, "%s-%s",
-                t->drv_name, dev->name);
+       err = -EINVAL;
+       if (snprintf(alg->alg.base.cra_name, CRYPTO_MAX_ALG_NAME,
+                    "%s", t->name) >= CRYPTO_MAX_ALG_NAME)
+               goto out_free_alg;
+       if (snprintf(alg->alg.base.cra_driver_name, CRYPTO_MAX_ALG_NAME,
+                    "%s-%s", t->drv_name, dev->name) >= CRYPTO_MAX_ALG_NAME)
+               goto out_free_alg;
 
        alg->alg.base.cra_priority = 300;
        alg->alg.base.cra_flags = CRYPTO_ALG_KERN_DRIVER_ONLY | CRYPTO_ALG_ASYNC;
@@ -2411,6 +2415,7 @@ static int hifn_alg_alloc(struct hifn_device *dev, const struct hifn_alg_templat
        err = crypto_register_skcipher(&alg->alg);
        if (err) {
                list_del(&alg->entry);
+out_free_alg:
                kfree(alg);
        }