* crypto/testmgr.c:1847 test_hash_vs_generic_impl() warn: we never enter this loop
@ 2025-06-23 13:02 kernel test robot
0 siblings, 0 replies; 4+ messages in thread
From: kernel test robot @ 2025-06-23 13:02 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp, Dan Carpenter
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: linux-kernel@vger.kernel.org
TO: Eric Biggers <ebiggers@google.com>
CC: Herbert Xu <herbert@gondor.apana.org.au>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 86731a2a651e58953fc949573895f2fa6d456841
commit: ac90aad0e9bf7c37e706fdc08ce763a553890bdf crypto: testmgr - reinstate kconfig control over full self-tests
date: 10 days ago
:::::: branch date: 16 hours ago
:::::: commit date: 10 days ago
config: nios2-randconfig-r072-20250623 (https://download.01.org/0day-ci/archive/20250623/202506232013.U8GW5Tnv-lkp@intel.com/config)
compiler: nios2-linux-gcc (GCC) 11.5.0
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202506232013.U8GW5Tnv-lkp@intel.com/
smatch warnings:
crypto/testmgr.c:1847 test_hash_vs_generic_impl() warn: we never enter this loop
crypto/testmgr.c:1847 test_hash_vs_generic_impl() warn: unsigned 'i' is never less than zero.
crypto/testmgr.c:1847 test_hash_vs_generic_impl() warn: unsigned 'i' is never less than zero.
crypto/testmgr.c:2462 test_aead_inauthentic_inputs() warn: we never enter this loop
crypto/testmgr.c:2462 test_aead_inauthentic_inputs() warn: unsigned 'i' is never less than zero.
crypto/testmgr.c:2462 test_aead_inauthentic_inputs() warn: unsigned 'i' is never less than zero.
crypto/testmgr.c:2564 test_aead_vs_generic_impl() warn: we never enter this loop
crypto/testmgr.c:2564 test_aead_vs_generic_impl() warn: unsigned 'i' is never less than zero.
crypto/testmgr.c:2564 test_aead_vs_generic_impl() warn: unsigned 'i' is never less than zero.
crypto/testmgr.c:3175 test_skcipher_vs_generic_impl() warn: we never enter this loop
crypto/testmgr.c:3175 test_skcipher_vs_generic_impl() warn: unsigned 'i' is never less than zero.
crypto/testmgr.c:3175 test_skcipher_vs_generic_impl() warn: unsigned 'i' is never less than zero.
vim +1847 crypto/testmgr.c
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1748
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1749 /*
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1750 * Test the hash algorithm represented by @req against the corresponding generic
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1751 * implementation, if one is available.
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1752 */
79cafe9a8b16f7 Eric Biggers 2020-10-26 1753 static int test_hash_vs_generic_impl(const char *generic_driver,
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1754 unsigned int maxkeysize,
9764d5b0cd0ea4 Herbert Xu 2025-03-30 1755 struct ahash_request *req,
d8ea98aa3cd464 Eric Biggers 2019-05-28 1756 struct shash_desc *desc,
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1757 struct test_sglist *tsgl,
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1758 u8 *hashstate)
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1759 {
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1760 struct crypto_ahash *tfm = crypto_ahash_reqtfm(req);
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1761 const unsigned int digestsize = crypto_ahash_digestsize(tfm);
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1762 const unsigned int blocksize = crypto_ahash_blocksize(tfm);
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1763 const unsigned int maxdatasize = (2 * PAGE_SIZE) - TESTMGR_POISON_LEN;
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1764 const char *algname = crypto_hash_alg_common(tfm)->base.cra_name;
79cafe9a8b16f7 Eric Biggers 2020-10-26 1765 const char *driver = crypto_ahash_driver_name(tfm);
f900fde2888360 Eric Biggers 2023-02-27 1766 struct rnd_state rng;
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1767 char _generic_driver[CRYPTO_MAX_ALG_NAME];
c2a813545ed481 Herbert Xu 2025-05-15 1768 struct ahash_request *generic_req = NULL;
c2a813545ed481 Herbert Xu 2025-05-15 1769 struct crypto_ahash *generic_tfm = NULL;
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1770 unsigned int i;
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1771 struct hash_testvec vec = { 0 };
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1772 char vec_name[64];
6b5ca646ca9d99 Arnd Bergmann 2019-06-18 1773 struct testvec_config *cfg;
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1774 char cfgname[TESTVEC_CONFIG_NAMELEN];
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1775 int err;
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1776
42e45119efba92 Eric Biggers 2025-05-05 1777 if (noslowtests)
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1778 return 0;
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1779
f900fde2888360 Eric Biggers 2023-02-27 1780 init_rnd_state(&rng);
f900fde2888360 Eric Biggers 2023-02-27 1781
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1782 if (!generic_driver) { /* Use default naming convention? */
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1783 err = build_generic_driver_name(algname, _generic_driver);
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1784 if (err)
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1785 return err;
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1786 generic_driver = _generic_driver;
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1787 }
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1788
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1789 if (strcmp(generic_driver, driver) == 0) /* Already the generic impl? */
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1790 return 0;
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1791
c2a813545ed481 Herbert Xu 2025-05-15 1792 generic_tfm = crypto_alloc_ahash(generic_driver, 0, 0);
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1793 if (IS_ERR(generic_tfm)) {
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1794 err = PTR_ERR(generic_tfm);
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1795 if (err == -ENOENT) {
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1796 pr_warn("alg: hash: skipping comparison tests for %s because %s is unavailable\n",
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1797 driver, generic_driver);
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1798 return 0;
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1799 }
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1800 pr_err("alg: hash: error allocating %s (generic impl of %s): %d\n",
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1801 generic_driver, algname, err);
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1802 return err;
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1803 }
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1804
6b5ca646ca9d99 Arnd Bergmann 2019-06-18 1805 cfg = kzalloc(sizeof(*cfg), GFP_KERNEL);
6b5ca646ca9d99 Arnd Bergmann 2019-06-18 1806 if (!cfg) {
6b5ca646ca9d99 Arnd Bergmann 2019-06-18 1807 err = -ENOMEM;
6b5ca646ca9d99 Arnd Bergmann 2019-06-18 1808 goto out;
6b5ca646ca9d99 Arnd Bergmann 2019-06-18 1809 }
6b5ca646ca9d99 Arnd Bergmann 2019-06-18 1810
c2a813545ed481 Herbert Xu 2025-05-15 1811 generic_req = ahash_request_alloc(generic_tfm, GFP_KERNEL);
c2a813545ed481 Herbert Xu 2025-05-15 1812 if (!generic_req) {
149c4e6ef7788d Arnd Bergmann 2019-06-18 1813 err = -ENOMEM;
149c4e6ef7788d Arnd Bergmann 2019-06-18 1814 goto out;
149c4e6ef7788d Arnd Bergmann 2019-06-18 1815 }
149c4e6ef7788d Arnd Bergmann 2019-06-18 1816
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1817 /* Check the algorithm properties for consistency. */
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1818
c2a813545ed481 Herbert Xu 2025-05-15 1819 if (digestsize != crypto_ahash_digestsize(generic_tfm)) {
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1820 pr_err("alg: hash: digestsize for %s (%u) doesn't match generic impl (%u)\n",
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1821 driver, digestsize,
c2a813545ed481 Herbert Xu 2025-05-15 1822 crypto_ahash_digestsize(generic_tfm));
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1823 err = -EINVAL;
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1824 goto out;
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1825 }
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1826
c2a813545ed481 Herbert Xu 2025-05-15 1827 if (blocksize != crypto_ahash_blocksize(generic_tfm)) {
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1828 pr_err("alg: hash: blocksize for %s (%u) doesn't match generic impl (%u)\n",
c2a813545ed481 Herbert Xu 2025-05-15 1829 driver, blocksize, crypto_ahash_blocksize(generic_tfm));
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1830 err = -EINVAL;
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1831 goto out;
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1832 }
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1833
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1834 /*
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1835 * Now generate test vectors using the generic implementation, and test
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1836 * the other implementation against them.
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1837 */
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1838
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1839 vec.key = kmalloc(maxkeysize, GFP_KERNEL);
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1840 vec.plaintext = kmalloc(maxdatasize, GFP_KERNEL);
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1841 vec.digest = kmalloc(digestsize, GFP_KERNEL);
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1842 if (!vec.key || !vec.plaintext || !vec.digest) {
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1843 err = -ENOMEM;
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1844 goto out;
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1845 }
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1846
9a8a6b3f0950c0 Eric Biggers 2019-04-11 @1847 for (i = 0; i < fuzz_iterations * 8; i++) {
c2a813545ed481 Herbert Xu 2025-05-15 1848 generate_random_hash_testvec(&rng, generic_req, &vec,
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1849 maxkeysize, maxdatasize,
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1850 vec_name, sizeof(vec_name));
f900fde2888360 Eric Biggers 2023-02-27 1851 generate_random_testvec_config(&rng, cfg, cfgname,
f900fde2888360 Eric Biggers 2023-02-27 1852 sizeof(cfgname));
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1853
79cafe9a8b16f7 Eric Biggers 2020-10-26 1854 err = test_hash_vec_cfg(&vec, vec_name, cfg,
9764d5b0cd0ea4 Herbert Xu 2025-03-30 1855 req, desc, tsgl, hashstate);
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1856 if (err)
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1857 goto out;
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1858 cond_resched();
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1859 }
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1860 err = 0;
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1861 out:
6b5ca646ca9d99 Arnd Bergmann 2019-06-18 1862 kfree(cfg);
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1863 kfree(vec.key);
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1864 kfree(vec.plaintext);
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1865 kfree(vec.digest);
c2a813545ed481 Herbert Xu 2025-05-15 1866 ahash_request_free(generic_req);
c2a813545ed481 Herbert Xu 2025-05-15 1867 crypto_free_ahash(generic_tfm);
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1868 return err;
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1869 }
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1870
:::::: The code at line 1847 was first introduced by commit
:::::: 9a8a6b3f0950c0df220b684b686c26a902cfcf1a crypto: testmgr - fuzz hashes against their generic implementation
:::::: TO: Eric Biggers <ebiggers@google.com>
:::::: CC: Herbert Xu <herbert@gondor.apana.org.au>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 4+ messages in thread* crypto/testmgr.c:1847 test_hash_vs_generic_impl() warn: we never enter this loop
@ 2025-10-09 13:07 kernel test robot
0 siblings, 0 replies; 4+ messages in thread
From: kernel test robot @ 2025-10-09 13:07 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp, Dan Carpenter
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: linux-kernel@vger.kernel.org
TO: Eric Biggers <ebiggers@google.com>
CC: Herbert Xu <herbert@gondor.apana.org.au>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: ec714e371f22f716a04e6ecb2a24988c92b26911
commit: ac90aad0e9bf7c37e706fdc08ce763a553890bdf crypto: testmgr - reinstate kconfig control over full self-tests
date: 4 months ago
:::::: branch date: 11 hours ago
:::::: commit date: 4 months ago
config: alpha-randconfig-r071-20251009 (https://download.01.org/0day-ci/archive/20251009/202510092154.6cn2xGth-lkp@intel.com/config)
compiler: alpha-linux-gcc (GCC) 14.3.0
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202510092154.6cn2xGth-lkp@intel.com/
smatch warnings:
crypto/testmgr.c:1847 test_hash_vs_generic_impl() warn: we never enter this loop
crypto/testmgr.c:1847 test_hash_vs_generic_impl() warn: unsigned 'i' is never less than zero.
crypto/testmgr.c:1847 test_hash_vs_generic_impl() warn: unsigned 'i' is never less than zero.
crypto/testmgr.c:2462 test_aead_inauthentic_inputs() warn: we never enter this loop
crypto/testmgr.c:2462 test_aead_inauthentic_inputs() warn: unsigned 'i' is never less than zero.
crypto/testmgr.c:2462 test_aead_inauthentic_inputs() warn: unsigned 'i' is never less than zero.
crypto/testmgr.c:2564 test_aead_vs_generic_impl() warn: we never enter this loop
crypto/testmgr.c:2564 test_aead_vs_generic_impl() warn: unsigned 'i' is never less than zero.
crypto/testmgr.c:2564 test_aead_vs_generic_impl() warn: unsigned 'i' is never less than zero.
crypto/testmgr.c:3175 test_skcipher_vs_generic_impl() warn: we never enter this loop
crypto/testmgr.c:3175 test_skcipher_vs_generic_impl() warn: unsigned 'i' is never less than zero.
crypto/testmgr.c:3175 test_skcipher_vs_generic_impl() warn: unsigned 'i' is never less than zero.
vim +1847 crypto/testmgr.c
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1748
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1749 /*
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1750 * Test the hash algorithm represented by @req against the corresponding generic
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1751 * implementation, if one is available.
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1752 */
79cafe9a8b16f7a Eric Biggers 2020-10-26 1753 static int test_hash_vs_generic_impl(const char *generic_driver,
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1754 unsigned int maxkeysize,
9764d5b0cd0ea48 Herbert Xu 2025-03-30 1755 struct ahash_request *req,
d8ea98aa3cd4646 Eric Biggers 2019-05-28 1756 struct shash_desc *desc,
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1757 struct test_sglist *tsgl,
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1758 u8 *hashstate)
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1759 {
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1760 struct crypto_ahash *tfm = crypto_ahash_reqtfm(req);
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1761 const unsigned int digestsize = crypto_ahash_digestsize(tfm);
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1762 const unsigned int blocksize = crypto_ahash_blocksize(tfm);
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1763 const unsigned int maxdatasize = (2 * PAGE_SIZE) - TESTMGR_POISON_LEN;
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1764 const char *algname = crypto_hash_alg_common(tfm)->base.cra_name;
79cafe9a8b16f7a Eric Biggers 2020-10-26 1765 const char *driver = crypto_ahash_driver_name(tfm);
f900fde28883602 Eric Biggers 2023-02-27 1766 struct rnd_state rng;
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1767 char _generic_driver[CRYPTO_MAX_ALG_NAME];
c2a813545ed4810 Herbert Xu 2025-05-15 1768 struct ahash_request *generic_req = NULL;
c2a813545ed4810 Herbert Xu 2025-05-15 1769 struct crypto_ahash *generic_tfm = NULL;
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1770 unsigned int i;
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1771 struct hash_testvec vec = { 0 };
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1772 char vec_name[64];
6b5ca646ca9d996 Arnd Bergmann 2019-06-18 1773 struct testvec_config *cfg;
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1774 char cfgname[TESTVEC_CONFIG_NAMELEN];
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1775 int err;
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1776
42e45119efba924 Eric Biggers 2025-05-05 1777 if (noslowtests)
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1778 return 0;
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1779
f900fde28883602 Eric Biggers 2023-02-27 1780 init_rnd_state(&rng);
f900fde28883602 Eric Biggers 2023-02-27 1781
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1782 if (!generic_driver) { /* Use default naming convention? */
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1783 err = build_generic_driver_name(algname, _generic_driver);
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1784 if (err)
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1785 return err;
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1786 generic_driver = _generic_driver;
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1787 }
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1788
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1789 if (strcmp(generic_driver, driver) == 0) /* Already the generic impl? */
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1790 return 0;
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1791
c2a813545ed4810 Herbert Xu 2025-05-15 1792 generic_tfm = crypto_alloc_ahash(generic_driver, 0, 0);
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1793 if (IS_ERR(generic_tfm)) {
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1794 err = PTR_ERR(generic_tfm);
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1795 if (err == -ENOENT) {
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1796 pr_warn("alg: hash: skipping comparison tests for %s because %s is unavailable\n",
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1797 driver, generic_driver);
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1798 return 0;
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1799 }
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1800 pr_err("alg: hash: error allocating %s (generic impl of %s): %d\n",
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1801 generic_driver, algname, err);
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1802 return err;
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1803 }
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1804
6b5ca646ca9d996 Arnd Bergmann 2019-06-18 1805 cfg = kzalloc(sizeof(*cfg), GFP_KERNEL);
6b5ca646ca9d996 Arnd Bergmann 2019-06-18 1806 if (!cfg) {
6b5ca646ca9d996 Arnd Bergmann 2019-06-18 1807 err = -ENOMEM;
6b5ca646ca9d996 Arnd Bergmann 2019-06-18 1808 goto out;
6b5ca646ca9d996 Arnd Bergmann 2019-06-18 1809 }
6b5ca646ca9d996 Arnd Bergmann 2019-06-18 1810
c2a813545ed4810 Herbert Xu 2025-05-15 1811 generic_req = ahash_request_alloc(generic_tfm, GFP_KERNEL);
c2a813545ed4810 Herbert Xu 2025-05-15 1812 if (!generic_req) {
149c4e6ef7788d5 Arnd Bergmann 2019-06-18 1813 err = -ENOMEM;
149c4e6ef7788d5 Arnd Bergmann 2019-06-18 1814 goto out;
149c4e6ef7788d5 Arnd Bergmann 2019-06-18 1815 }
149c4e6ef7788d5 Arnd Bergmann 2019-06-18 1816
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1817 /* Check the algorithm properties for consistency. */
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1818
c2a813545ed4810 Herbert Xu 2025-05-15 1819 if (digestsize != crypto_ahash_digestsize(generic_tfm)) {
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1820 pr_err("alg: hash: digestsize for %s (%u) doesn't match generic impl (%u)\n",
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1821 driver, digestsize,
c2a813545ed4810 Herbert Xu 2025-05-15 1822 crypto_ahash_digestsize(generic_tfm));
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1823 err = -EINVAL;
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1824 goto out;
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1825 }
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1826
c2a813545ed4810 Herbert Xu 2025-05-15 1827 if (blocksize != crypto_ahash_blocksize(generic_tfm)) {
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1828 pr_err("alg: hash: blocksize for %s (%u) doesn't match generic impl (%u)\n",
c2a813545ed4810 Herbert Xu 2025-05-15 1829 driver, blocksize, crypto_ahash_blocksize(generic_tfm));
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1830 err = -EINVAL;
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1831 goto out;
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1832 }
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1833
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1834 /*
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1835 * Now generate test vectors using the generic implementation, and test
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1836 * the other implementation against them.
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1837 */
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1838
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1839 vec.key = kmalloc(maxkeysize, GFP_KERNEL);
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1840 vec.plaintext = kmalloc(maxdatasize, GFP_KERNEL);
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1841 vec.digest = kmalloc(digestsize, GFP_KERNEL);
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1842 if (!vec.key || !vec.plaintext || !vec.digest) {
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1843 err = -ENOMEM;
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1844 goto out;
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1845 }
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1846
9a8a6b3f0950c0d Eric Biggers 2019-04-11 @1847 for (i = 0; i < fuzz_iterations * 8; i++) {
c2a813545ed4810 Herbert Xu 2025-05-15 1848 generate_random_hash_testvec(&rng, generic_req, &vec,
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1849 maxkeysize, maxdatasize,
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1850 vec_name, sizeof(vec_name));
f900fde28883602 Eric Biggers 2023-02-27 1851 generate_random_testvec_config(&rng, cfg, cfgname,
f900fde28883602 Eric Biggers 2023-02-27 1852 sizeof(cfgname));
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1853
79cafe9a8b16f7a Eric Biggers 2020-10-26 1854 err = test_hash_vec_cfg(&vec, vec_name, cfg,
9764d5b0cd0ea48 Herbert Xu 2025-03-30 1855 req, desc, tsgl, hashstate);
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1856 if (err)
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1857 goto out;
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1858 cond_resched();
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1859 }
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1860 err = 0;
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1861 out:
6b5ca646ca9d996 Arnd Bergmann 2019-06-18 1862 kfree(cfg);
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1863 kfree(vec.key);
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1864 kfree(vec.plaintext);
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1865 kfree(vec.digest);
c2a813545ed4810 Herbert Xu 2025-05-15 1866 ahash_request_free(generic_req);
c2a813545ed4810 Herbert Xu 2025-05-15 1867 crypto_free_ahash(generic_tfm);
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1868 return err;
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1869 }
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1870
:::::: The code at line 1847 was first introduced by commit
:::::: 9a8a6b3f0950c0df220b684b686c26a902cfcf1a crypto: testmgr - fuzz hashes against their generic implementation
:::::: TO: Eric Biggers <ebiggers@google.com>
:::::: CC: Herbert Xu <herbert@gondor.apana.org.au>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 4+ messages in thread* crypto/testmgr.c:1847 test_hash_vs_generic_impl() warn: we never enter this loop
@ 2026-01-19 21:04 kernel test robot
0 siblings, 0 replies; 4+ messages in thread
From: kernel test robot @ 2026-01-19 21:04 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp, Dan Carpenter
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: linux-kernel@vger.kernel.org
TO: Eric Biggers <ebiggers@google.com>
CC: Herbert Xu <herbert@gondor.apana.org.au>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 24d479d26b25bce5faea3ddd9fa8f3a6c3129ea7
commit: ac90aad0e9bf7c37e706fdc08ce763a553890bdf crypto: testmgr - reinstate kconfig control over full self-tests
date: 7 months ago
:::::: branch date: 21 hours ago
:::::: commit date: 7 months ago
config: alpha-randconfig-r073-20260120 (https://download.01.org/0day-ci/archive/20260120/202601200536.dd48wQI1-lkp@intel.com/config)
compiler: alpha-linux-gcc (GCC) 8.5.0
smatch version: v0.5.0-8985-g2614ff1a
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202601200536.dd48wQI1-lkp@intel.com/
smatch warnings:
crypto/testmgr.c:1847 test_hash_vs_generic_impl() warn: we never enter this loop
crypto/testmgr.c:1847 test_hash_vs_generic_impl() warn: unsigned 'i' is never less than zero.
crypto/testmgr.c:1847 test_hash_vs_generic_impl() warn: unsigned 'i' is never less than zero.
crypto/testmgr.c:2462 test_aead_inauthentic_inputs() warn: we never enter this loop
crypto/testmgr.c:2462 test_aead_inauthentic_inputs() warn: unsigned 'i' is never less than zero.
crypto/testmgr.c:2462 test_aead_inauthentic_inputs() warn: unsigned 'i' is never less than zero.
crypto/testmgr.c:2564 test_aead_vs_generic_impl() warn: we never enter this loop
crypto/testmgr.c:2564 test_aead_vs_generic_impl() warn: unsigned 'i' is never less than zero.
crypto/testmgr.c:2564 test_aead_vs_generic_impl() warn: unsigned 'i' is never less than zero.
crypto/testmgr.c:3175 test_skcipher_vs_generic_impl() warn: we never enter this loop
crypto/testmgr.c:3175 test_skcipher_vs_generic_impl() warn: unsigned 'i' is never less than zero.
crypto/testmgr.c:3175 test_skcipher_vs_generic_impl() warn: unsigned 'i' is never less than zero.
vim +1847 crypto/testmgr.c
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1748
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1749 /*
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1750 * Test the hash algorithm represented by @req against the corresponding generic
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1751 * implementation, if one is available.
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1752 */
79cafe9a8b16f7a Eric Biggers 2020-10-26 1753 static int test_hash_vs_generic_impl(const char *generic_driver,
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1754 unsigned int maxkeysize,
9764d5b0cd0ea48 Herbert Xu 2025-03-30 1755 struct ahash_request *req,
d8ea98aa3cd4646 Eric Biggers 2019-05-28 1756 struct shash_desc *desc,
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1757 struct test_sglist *tsgl,
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1758 u8 *hashstate)
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1759 {
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1760 struct crypto_ahash *tfm = crypto_ahash_reqtfm(req);
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1761 const unsigned int digestsize = crypto_ahash_digestsize(tfm);
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1762 const unsigned int blocksize = crypto_ahash_blocksize(tfm);
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1763 const unsigned int maxdatasize = (2 * PAGE_SIZE) - TESTMGR_POISON_LEN;
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1764 const char *algname = crypto_hash_alg_common(tfm)->base.cra_name;
79cafe9a8b16f7a Eric Biggers 2020-10-26 1765 const char *driver = crypto_ahash_driver_name(tfm);
f900fde28883602 Eric Biggers 2023-02-27 1766 struct rnd_state rng;
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1767 char _generic_driver[CRYPTO_MAX_ALG_NAME];
c2a813545ed4810 Herbert Xu 2025-05-15 1768 struct ahash_request *generic_req = NULL;
c2a813545ed4810 Herbert Xu 2025-05-15 1769 struct crypto_ahash *generic_tfm = NULL;
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1770 unsigned int i;
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1771 struct hash_testvec vec = { 0 };
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1772 char vec_name[64];
6b5ca646ca9d996 Arnd Bergmann 2019-06-18 1773 struct testvec_config *cfg;
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1774 char cfgname[TESTVEC_CONFIG_NAMELEN];
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1775 int err;
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1776
42e45119efba924 Eric Biggers 2025-05-05 1777 if (noslowtests)
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1778 return 0;
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1779
f900fde28883602 Eric Biggers 2023-02-27 1780 init_rnd_state(&rng);
f900fde28883602 Eric Biggers 2023-02-27 1781
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1782 if (!generic_driver) { /* Use default naming convention? */
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1783 err = build_generic_driver_name(algname, _generic_driver);
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1784 if (err)
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1785 return err;
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1786 generic_driver = _generic_driver;
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1787 }
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1788
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1789 if (strcmp(generic_driver, driver) == 0) /* Already the generic impl? */
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1790 return 0;
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1791
c2a813545ed4810 Herbert Xu 2025-05-15 1792 generic_tfm = crypto_alloc_ahash(generic_driver, 0, 0);
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1793 if (IS_ERR(generic_tfm)) {
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1794 err = PTR_ERR(generic_tfm);
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1795 if (err == -ENOENT) {
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1796 pr_warn("alg: hash: skipping comparison tests for %s because %s is unavailable\n",
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1797 driver, generic_driver);
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1798 return 0;
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1799 }
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1800 pr_err("alg: hash: error allocating %s (generic impl of %s): %d\n",
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1801 generic_driver, algname, err);
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1802 return err;
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1803 }
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1804
6b5ca646ca9d996 Arnd Bergmann 2019-06-18 1805 cfg = kzalloc(sizeof(*cfg), GFP_KERNEL);
6b5ca646ca9d996 Arnd Bergmann 2019-06-18 1806 if (!cfg) {
6b5ca646ca9d996 Arnd Bergmann 2019-06-18 1807 err = -ENOMEM;
6b5ca646ca9d996 Arnd Bergmann 2019-06-18 1808 goto out;
6b5ca646ca9d996 Arnd Bergmann 2019-06-18 1809 }
6b5ca646ca9d996 Arnd Bergmann 2019-06-18 1810
c2a813545ed4810 Herbert Xu 2025-05-15 1811 generic_req = ahash_request_alloc(generic_tfm, GFP_KERNEL);
c2a813545ed4810 Herbert Xu 2025-05-15 1812 if (!generic_req) {
149c4e6ef7788d5 Arnd Bergmann 2019-06-18 1813 err = -ENOMEM;
149c4e6ef7788d5 Arnd Bergmann 2019-06-18 1814 goto out;
149c4e6ef7788d5 Arnd Bergmann 2019-06-18 1815 }
149c4e6ef7788d5 Arnd Bergmann 2019-06-18 1816
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1817 /* Check the algorithm properties for consistency. */
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1818
c2a813545ed4810 Herbert Xu 2025-05-15 1819 if (digestsize != crypto_ahash_digestsize(generic_tfm)) {
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1820 pr_err("alg: hash: digestsize for %s (%u) doesn't match generic impl (%u)\n",
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1821 driver, digestsize,
c2a813545ed4810 Herbert Xu 2025-05-15 1822 crypto_ahash_digestsize(generic_tfm));
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1823 err = -EINVAL;
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1824 goto out;
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1825 }
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1826
c2a813545ed4810 Herbert Xu 2025-05-15 1827 if (blocksize != crypto_ahash_blocksize(generic_tfm)) {
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1828 pr_err("alg: hash: blocksize for %s (%u) doesn't match generic impl (%u)\n",
c2a813545ed4810 Herbert Xu 2025-05-15 1829 driver, blocksize, crypto_ahash_blocksize(generic_tfm));
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1830 err = -EINVAL;
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1831 goto out;
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1832 }
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1833
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1834 /*
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1835 * Now generate test vectors using the generic implementation, and test
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1836 * the other implementation against them.
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1837 */
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1838
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1839 vec.key = kmalloc(maxkeysize, GFP_KERNEL);
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1840 vec.plaintext = kmalloc(maxdatasize, GFP_KERNEL);
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1841 vec.digest = kmalloc(digestsize, GFP_KERNEL);
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1842 if (!vec.key || !vec.plaintext || !vec.digest) {
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1843 err = -ENOMEM;
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1844 goto out;
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1845 }
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1846
9a8a6b3f0950c0d Eric Biggers 2019-04-11 @1847 for (i = 0; i < fuzz_iterations * 8; i++) {
c2a813545ed4810 Herbert Xu 2025-05-15 1848 generate_random_hash_testvec(&rng, generic_req, &vec,
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1849 maxkeysize, maxdatasize,
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1850 vec_name, sizeof(vec_name));
f900fde28883602 Eric Biggers 2023-02-27 1851 generate_random_testvec_config(&rng, cfg, cfgname,
f900fde28883602 Eric Biggers 2023-02-27 1852 sizeof(cfgname));
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1853
79cafe9a8b16f7a Eric Biggers 2020-10-26 1854 err = test_hash_vec_cfg(&vec, vec_name, cfg,
9764d5b0cd0ea48 Herbert Xu 2025-03-30 1855 req, desc, tsgl, hashstate);
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1856 if (err)
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1857 goto out;
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1858 cond_resched();
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1859 }
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1860 err = 0;
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1861 out:
6b5ca646ca9d996 Arnd Bergmann 2019-06-18 1862 kfree(cfg);
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1863 kfree(vec.key);
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1864 kfree(vec.plaintext);
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1865 kfree(vec.digest);
c2a813545ed4810 Herbert Xu 2025-05-15 1866 ahash_request_free(generic_req);
c2a813545ed4810 Herbert Xu 2025-05-15 1867 crypto_free_ahash(generic_tfm);
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1868 return err;
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1869 }
9a8a6b3f0950c0d Eric Biggers 2019-04-11 1870
:::::: The code at line 1847 was first introduced by commit
:::::: 9a8a6b3f0950c0df220b684b686c26a902cfcf1a crypto: testmgr - fuzz hashes against their generic implementation
:::::: TO: Eric Biggers <ebiggers@google.com>
:::::: CC: Herbert Xu <herbert@gondor.apana.org.au>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 4+ messages in thread* crypto/testmgr.c:1847 test_hash_vs_generic_impl() warn: we never enter this loop
@ 2026-05-01 23:44 kernel test robot
0 siblings, 0 replies; 4+ messages in thread
From: kernel test robot @ 2026-05-01 23:44 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp, Dan Carpenter
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: linux-kernel@vger.kernel.org
TO: Eric Biggers <ebiggers@google.com>
CC: Herbert Xu <herbert@gondor.apana.org.au>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: ef5f46b630235b75beec43174348c3d01d6fc49a
commit: ac90aad0e9bf7c37e706fdc08ce763a553890bdf crypto: testmgr - reinstate kconfig control over full self-tests
date: 11 months ago
:::::: branch date: 3 hours ago
:::::: commit date: 11 months ago
config: s390-randconfig-r071-20260502 (https://download.01.org/0day-ci/archive/20260502/202605020752.jIIJtYx7-lkp@intel.com/config)
compiler: s390-linux-gcc (GCC) 15.2.0
smatch: v0.5.0-9065-ge9cc34fd
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Fixes: ac90aad0e9bf ("crypto: testmgr - reinstate kconfig control over full self-tests")
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202605020752.jIIJtYx7-lkp@intel.com/
New smatch warnings:
crypto/testmgr.c:1847 test_hash_vs_generic_impl() warn: we never enter this loop
crypto/testmgr.c:1847 test_hash_vs_generic_impl() warn: unsigned 'i' is never less than zero.
crypto/testmgr.c:1847 test_hash_vs_generic_impl() warn: unsigned 'i' is never less than zero.
crypto/testmgr.c:2462 test_aead_inauthentic_inputs() warn: we never enter this loop
crypto/testmgr.c:3175 test_skcipher_vs_generic_impl() warn: we never enter this loop
crypto/testmgr.c:3175 test_skcipher_vs_generic_impl() warn: unsigned 'i' is never less than zero.
crypto/testmgr.c:3175 test_skcipher_vs_generic_impl() warn: unsigned 'i' is never less than zero.
Old smatch warnings:
crypto/testmgr.c:2462 test_aead_inauthentic_inputs() warn: unsigned 'i' is never less than zero.
crypto/testmgr.c:2462 test_aead_inauthentic_inputs() warn: unsigned 'i' is never less than zero.
crypto/testmgr.c:2564 test_aead_vs_generic_impl() warn: we never enter this loop
crypto/testmgr.c:2564 test_aead_vs_generic_impl() warn: unsigned 'i' is never less than zero.
crypto/testmgr.c:2564 test_aead_vs_generic_impl() warn: unsigned 'i' is never less than zero.
vim +1847 crypto/testmgr.c
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1748
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1749 /*
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1750 * Test the hash algorithm represented by @req against the corresponding generic
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1751 * implementation, if one is available.
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1752 */
79cafe9a8b16f7 Eric Biggers 2020-10-26 1753 static int test_hash_vs_generic_impl(const char *generic_driver,
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1754 unsigned int maxkeysize,
9764d5b0cd0ea4 Herbert Xu 2025-03-30 1755 struct ahash_request *req,
d8ea98aa3cd464 Eric Biggers 2019-05-28 1756 struct shash_desc *desc,
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1757 struct test_sglist *tsgl,
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1758 u8 *hashstate)
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1759 {
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1760 struct crypto_ahash *tfm = crypto_ahash_reqtfm(req);
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1761 const unsigned int digestsize = crypto_ahash_digestsize(tfm);
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1762 const unsigned int blocksize = crypto_ahash_blocksize(tfm);
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1763 const unsigned int maxdatasize = (2 * PAGE_SIZE) - TESTMGR_POISON_LEN;
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1764 const char *algname = crypto_hash_alg_common(tfm)->base.cra_name;
79cafe9a8b16f7 Eric Biggers 2020-10-26 1765 const char *driver = crypto_ahash_driver_name(tfm);
f900fde2888360 Eric Biggers 2023-02-27 1766 struct rnd_state rng;
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1767 char _generic_driver[CRYPTO_MAX_ALG_NAME];
c2a813545ed481 Herbert Xu 2025-05-15 1768 struct ahash_request *generic_req = NULL;
c2a813545ed481 Herbert Xu 2025-05-15 1769 struct crypto_ahash *generic_tfm = NULL;
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1770 unsigned int i;
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1771 struct hash_testvec vec = { 0 };
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1772 char vec_name[64];
6b5ca646ca9d99 Arnd Bergmann 2019-06-18 1773 struct testvec_config *cfg;
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1774 char cfgname[TESTVEC_CONFIG_NAMELEN];
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1775 int err;
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1776
42e45119efba92 Eric Biggers 2025-05-05 1777 if (noslowtests)
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1778 return 0;
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1779
f900fde2888360 Eric Biggers 2023-02-27 1780 init_rnd_state(&rng);
f900fde2888360 Eric Biggers 2023-02-27 1781
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1782 if (!generic_driver) { /* Use default naming convention? */
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1783 err = build_generic_driver_name(algname, _generic_driver);
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1784 if (err)
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1785 return err;
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1786 generic_driver = _generic_driver;
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1787 }
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1788
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1789 if (strcmp(generic_driver, driver) == 0) /* Already the generic impl? */
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1790 return 0;
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1791
c2a813545ed481 Herbert Xu 2025-05-15 1792 generic_tfm = crypto_alloc_ahash(generic_driver, 0, 0);
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1793 if (IS_ERR(generic_tfm)) {
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1794 err = PTR_ERR(generic_tfm);
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1795 if (err == -ENOENT) {
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1796 pr_warn("alg: hash: skipping comparison tests for %s because %s is unavailable\n",
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1797 driver, generic_driver);
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1798 return 0;
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1799 }
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1800 pr_err("alg: hash: error allocating %s (generic impl of %s): %d\n",
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1801 generic_driver, algname, err);
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1802 return err;
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1803 }
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1804
6b5ca646ca9d99 Arnd Bergmann 2019-06-18 1805 cfg = kzalloc(sizeof(*cfg), GFP_KERNEL);
6b5ca646ca9d99 Arnd Bergmann 2019-06-18 1806 if (!cfg) {
6b5ca646ca9d99 Arnd Bergmann 2019-06-18 1807 err = -ENOMEM;
6b5ca646ca9d99 Arnd Bergmann 2019-06-18 1808 goto out;
6b5ca646ca9d99 Arnd Bergmann 2019-06-18 1809 }
6b5ca646ca9d99 Arnd Bergmann 2019-06-18 1810
c2a813545ed481 Herbert Xu 2025-05-15 1811 generic_req = ahash_request_alloc(generic_tfm, GFP_KERNEL);
c2a813545ed481 Herbert Xu 2025-05-15 1812 if (!generic_req) {
149c4e6ef7788d Arnd Bergmann 2019-06-18 1813 err = -ENOMEM;
149c4e6ef7788d Arnd Bergmann 2019-06-18 1814 goto out;
149c4e6ef7788d Arnd Bergmann 2019-06-18 1815 }
149c4e6ef7788d Arnd Bergmann 2019-06-18 1816
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1817 /* Check the algorithm properties for consistency. */
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1818
c2a813545ed481 Herbert Xu 2025-05-15 1819 if (digestsize != crypto_ahash_digestsize(generic_tfm)) {
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1820 pr_err("alg: hash: digestsize for %s (%u) doesn't match generic impl (%u)\n",
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1821 driver, digestsize,
c2a813545ed481 Herbert Xu 2025-05-15 1822 crypto_ahash_digestsize(generic_tfm));
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1823 err = -EINVAL;
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1824 goto out;
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1825 }
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1826
c2a813545ed481 Herbert Xu 2025-05-15 1827 if (blocksize != crypto_ahash_blocksize(generic_tfm)) {
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1828 pr_err("alg: hash: blocksize for %s (%u) doesn't match generic impl (%u)\n",
c2a813545ed481 Herbert Xu 2025-05-15 1829 driver, blocksize, crypto_ahash_blocksize(generic_tfm));
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1830 err = -EINVAL;
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1831 goto out;
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1832 }
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1833
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1834 /*
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1835 * Now generate test vectors using the generic implementation, and test
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1836 * the other implementation against them.
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1837 */
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1838
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1839 vec.key = kmalloc(maxkeysize, GFP_KERNEL);
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1840 vec.plaintext = kmalloc(maxdatasize, GFP_KERNEL);
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1841 vec.digest = kmalloc(digestsize, GFP_KERNEL);
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1842 if (!vec.key || !vec.plaintext || !vec.digest) {
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1843 err = -ENOMEM;
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1844 goto out;
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1845 }
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1846
9a8a6b3f0950c0 Eric Biggers 2019-04-11 @1847 for (i = 0; i < fuzz_iterations * 8; i++) {
c2a813545ed481 Herbert Xu 2025-05-15 1848 generate_random_hash_testvec(&rng, generic_req, &vec,
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1849 maxkeysize, maxdatasize,
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1850 vec_name, sizeof(vec_name));
f900fde2888360 Eric Biggers 2023-02-27 1851 generate_random_testvec_config(&rng, cfg, cfgname,
f900fde2888360 Eric Biggers 2023-02-27 1852 sizeof(cfgname));
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1853
79cafe9a8b16f7 Eric Biggers 2020-10-26 1854 err = test_hash_vec_cfg(&vec, vec_name, cfg,
9764d5b0cd0ea4 Herbert Xu 2025-03-30 1855 req, desc, tsgl, hashstate);
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1856 if (err)
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1857 goto out;
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1858 cond_resched();
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1859 }
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1860 err = 0;
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1861 out:
6b5ca646ca9d99 Arnd Bergmann 2019-06-18 1862 kfree(cfg);
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1863 kfree(vec.key);
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1864 kfree(vec.plaintext);
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1865 kfree(vec.digest);
c2a813545ed481 Herbert Xu 2025-05-15 1866 ahash_request_free(generic_req);
c2a813545ed481 Herbert Xu 2025-05-15 1867 crypto_free_ahash(generic_tfm);
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1868 return err;
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1869 }
9a8a6b3f0950c0 Eric Biggers 2019-04-11 1870
:::::: The code at line 1847 was first introduced by commit
:::::: 9a8a6b3f0950c0df220b684b686c26a902cfcf1a crypto: testmgr - fuzz hashes against their generic implementation
:::::: TO: Eric Biggers <ebiggers@google.com>
:::::: CC: Herbert Xu <herbert@gondor.apana.org.au>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2026-05-01 23:45 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-06-23 13:02 crypto/testmgr.c:1847 test_hash_vs_generic_impl() warn: we never enter this loop kernel test robot
-- strict thread matches above, loose matches on Subject: below --
2025-10-09 13:07 kernel test robot
2026-01-19 21:04 kernel test robot
2026-05-01 23:44 kernel test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.