lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date:   Thu, 18 Oct 2018 23:46:47 +0300
From:   <yael.chemla@...s.arm.com>
To:     "'kbuild test robot'" <lkp@...el.com>
Cc:     <kbuild-all@...org>, "'Yael CHEmla'" <yael.chemla@....com>,
        <linux-kernel@...r.kernel.org>,
        "'Herbert Xu'" <herbert@...dor.apana.org.au>,
        "'David Miller'" <davem@...emloft.net>,
        "'Linux Crypto Mailing List'" <linux-crypto@...r.kernel.org>,
        "Ofir Drang" <Ofir.Drang@....com>,
        "'Linux kernel mailing list'" <linux-kernel@...r.kernel.org>
Subject: RE: [PATCH 3/3] crypto: ccree: add SM3 support

this patch set should be applies after:
"crypto: ccree: add CryptoCell 713 baseline support"
patch set by Gilad Ben-Yossef


> -----Original Message-----
> From: kbuild test robot <lkp@...el.com>
> Sent: Thursday, 18 October 2018 22:58
> To: Yael Chemla <yael.chemla@...s.arm.com>
> Cc: kbuild-all@...org; Yael CHEmla <yael.chemla@....com>; linux-
> kernel@...r.kernel.org; Yael Chemla <yael.chemla@...s.arm.com>
> Subject: Re: [PATCH 3/3] crypto: ccree: add SM3 support
> 
> Hi Yael,
> 
> Thank you for the patch! Yet something to improve:
> 
> [auto build test ERROR on cryptodev/master] [also build test ERROR on v4.19-
> rc8 next-20181018] [if your patch is applied to the wrong git tree, please drop us
> a note to help improve the system]
> 
> url:    https://github.com/0day-ci/linux/commits/Yael-Chemla/crypto-ccree-add-
> SM3-support/20181019-033131
> base:   https://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-
> 2.6.git master
> config: i386-randconfig-x004-201841 (attached as .config)
> compiler: gcc-7 (Debian 7.3.0-1) 7.3.0
> reproduce:
>         # save the attached .config to linux build tree
>         make ARCH=i386
> 
> All error/warnings (new ones prefixed by >>):
> 
> >> drivers/crypto/ccree/cc_hash.c:1729:17: error: 'CC_HW_REV_713'
> undeclared here (not in a function); did you mean 'CC_HW_REV_712'?
>       .min_hw_rev = CC_HW_REV_713,
>                     ^~~~~~~~~~~~~
>                     CC_HW_REV_712
>    drivers/crypto/ccree/cc_hash.c: In function 'cc_init_hash_sram':
> >> drivers/crypto/ccree/cc_hash.c:1832:40: warning: comparison between
> >> pointer and integer
>      bool sm3_supported = (drvdata->hw_rev >= CC_HW_REV_713);
>                                            ^~
>    drivers/crypto/ccree/cc_hash.c: In function 'cc_hash_alloc':
>    drivers/crypto/ccree/cc_hash.c:1975:22: warning: comparison between
> pointer and integer
>      if (drvdata->hw_rev >= CC_HW_REV_713)
>                          ^~
>    drivers/crypto/ccree/cc_hash.c: In function 'cc_larval_digest_addr':
>    drivers/crypto/ccree/cc_hash.c:2252:41: warning: comparison between
> pointer and integer
>      bool sm3_supported = (_drvdata->hw_rev >= CC_HW_REV_713);
>                                             ^~
> 
> vim +1729 drivers/crypto/ccree/cc_hash.c
> 
>   1543
>   1544	#define CC_STATE_SIZE(_x) \
>   1545		((_x) + HASH_MAX_LEN_SIZE + CC_MAX_HASH_BLCK_SIZE + (2 *
> sizeof(u32)))
>   1546
>   1547	/* hash descriptors */
>   1548	static struct cc_hash_template driver_hash[] = {
>   1549		//Asynchronize hash template
>   1550		{
>   1551			.name = "sha1",
>   1552			.driver_name = "sha1-ccree",
>   1553			.mac_name = "hmac(sha1)",
>   1554			.mac_driver_name = "hmac-sha1-ccree",
>   1555			.blocksize = SHA1_BLOCK_SIZE,
>   1556			.is_mac = true,
>   1557			.synchronize = false,
>   1558			.template_ahash = {
>   1559				.init = cc_hash_init,
>   1560				.update = cc_hash_update,
>   1561				.final = cc_hash_final,
>   1562				.finup = cc_hash_finup,
>   1563				.digest = cc_hash_digest,
>   1564				.export = cc_hash_export,
>   1565				.import = cc_hash_import,
>   1566				.setkey = cc_hash_setkey,
>   1567				.halg = {
>   1568					.digestsize = SHA1_DIGEST_SIZE,
>   1569					.statesize =
> CC_STATE_SIZE(SHA1_DIGEST_SIZE),
>   1570				},
>   1571			},
>   1572			.hash_mode = DRV_HASH_SHA1,
>   1573			.hw_mode = DRV_HASH_HW_SHA1,
>   1574			.inter_digestsize = SHA1_DIGEST_SIZE,
>   1575			.min_hw_rev = CC_HW_REV_630,
>   1576		},
>   1577		{
>   1578			.name = "sha256",
>   1579			.driver_name = "sha256-ccree",
>   1580			.mac_name = "hmac(sha256)",
>   1581			.mac_driver_name = "hmac-sha256-ccree",
>   1582			.blocksize = SHA256_BLOCK_SIZE,
>   1583			.is_mac = true,
>   1584			.template_ahash = {
>   1585				.init = cc_hash_init,
>   1586				.update = cc_hash_update,
>   1587				.final = cc_hash_final,
>   1588				.finup = cc_hash_finup,
>   1589				.digest = cc_hash_digest,
>   1590				.export = cc_hash_export,
>   1591				.import = cc_hash_import,
>   1592				.setkey = cc_hash_setkey,
>   1593				.halg = {
>   1594					.digestsize = SHA256_DIGEST_SIZE,
>   1595					.statesize =
> CC_STATE_SIZE(SHA256_DIGEST_SIZE)
>   1596				},
>   1597			},
>   1598			.hash_mode = DRV_HASH_SHA256,
>   1599			.hw_mode = DRV_HASH_HW_SHA256,
>   1600			.inter_digestsize = SHA256_DIGEST_SIZE,
>   1601			.min_hw_rev = CC_HW_REV_630,
>   1602		},
>   1603		{
>   1604			.name = "sha224",
>   1605			.driver_name = "sha224-ccree",
>   1606			.mac_name = "hmac(sha224)",
>   1607			.mac_driver_name = "hmac-sha224-ccree",
>   1608			.blocksize = SHA224_BLOCK_SIZE,
>   1609			.is_mac = true,
>   1610			.template_ahash = {
>   1611				.init = cc_hash_init,
>   1612				.update = cc_hash_update,
>   1613				.final = cc_hash_final,
>   1614				.finup = cc_hash_finup,
>   1615				.digest = cc_hash_digest,
>   1616				.export = cc_hash_export,
>   1617				.import = cc_hash_import,
>   1618				.setkey = cc_hash_setkey,
>   1619				.halg = {
>   1620					.digestsize = SHA224_DIGEST_SIZE,
>   1621					.statesize =
> CC_STATE_SIZE(SHA224_DIGEST_SIZE),
>   1622				},
>   1623			},
>   1624			.hash_mode = DRV_HASH_SHA224,
>   1625			.hw_mode = DRV_HASH_HW_SHA256,
>   1626			.inter_digestsize = SHA256_DIGEST_SIZE,
>   1627			.min_hw_rev = CC_HW_REV_630,
>   1628		},
>   1629		{
>   1630			.name = "sha384",
>   1631			.driver_name = "sha384-ccree",
>   1632			.mac_name = "hmac(sha384)",
>   1633			.mac_driver_name = "hmac-sha384-ccree",
>   1634			.blocksize = SHA384_BLOCK_SIZE,
>   1635			.is_mac = true,
>   1636			.template_ahash = {
>   1637				.init = cc_hash_init,
>   1638				.update = cc_hash_update,
>   1639				.final = cc_hash_final,
>   1640				.finup = cc_hash_finup,
>   1641				.digest = cc_hash_digest,
>   1642				.export = cc_hash_export,
>   1643				.import = cc_hash_import,
>   1644				.setkey = cc_hash_setkey,
>   1645				.halg = {
>   1646					.digestsize = SHA384_DIGEST_SIZE,
>   1647					.statesize =
> CC_STATE_SIZE(SHA384_DIGEST_SIZE),
>   1648				},
>   1649			},
>   1650			.hash_mode = DRV_HASH_SHA384,
>   1651			.hw_mode = DRV_HASH_HW_SHA512,
>   1652			.inter_digestsize = SHA512_DIGEST_SIZE,
>   1653			.min_hw_rev = CC_HW_REV_712,
>   1654		},
>   1655		{
>   1656			.name = "sha512",
>   1657			.driver_name = "sha512-ccree",
>   1658			.mac_name = "hmac(sha512)",
>   1659			.mac_driver_name = "hmac-sha512-ccree",
>   1660			.blocksize = SHA512_BLOCK_SIZE,
>   1661			.is_mac = true,
>   1662			.template_ahash = {
>   1663				.init = cc_hash_init,
>   1664				.update = cc_hash_update,
>   1665				.final = cc_hash_final,
>   1666				.finup = cc_hash_finup,
>   1667				.digest = cc_hash_digest,
>   1668				.export = cc_hash_export,
>   1669				.import = cc_hash_import,
>   1670				.setkey = cc_hash_setkey,
>   1671				.halg = {
>   1672					.digestsize = SHA512_DIGEST_SIZE,
>   1673					.statesize =
> CC_STATE_SIZE(SHA512_DIGEST_SIZE),
>   1674				},
>   1675			},
>   1676			.hash_mode = DRV_HASH_SHA512,
>   1677			.hw_mode = DRV_HASH_HW_SHA512,
>   1678			.inter_digestsize = SHA512_DIGEST_SIZE,
>   1679			.min_hw_rev = CC_HW_REV_712,
>   1680		},
>   1681		{
>   1682			.name = "md5",
>   1683			.driver_name = "md5-ccree",
>   1684			.mac_name = "hmac(md5)",
>   1685			.mac_driver_name = "hmac-md5-ccree",
>   1686			.blocksize = MD5_HMAC_BLOCK_SIZE,
>   1687			.is_mac = true,
>   1688			.template_ahash = {
>   1689				.init = cc_hash_init,
>   1690				.update = cc_hash_update,
>   1691				.final = cc_hash_final,
>   1692				.finup = cc_hash_finup,
>   1693				.digest = cc_hash_digest,
>   1694				.export = cc_hash_export,
>   1695				.import = cc_hash_import,
>   1696				.setkey = cc_hash_setkey,
>   1697				.halg = {
>   1698					.digestsize = MD5_DIGEST_SIZE,
>   1699					.statesize =
> CC_STATE_SIZE(MD5_DIGEST_SIZE),
>   1700				},
>   1701			},
>   1702			.hash_mode = DRV_HASH_MD5,
>   1703			.hw_mode = DRV_HASH_HW_MD5,
>   1704			.inter_digestsize = MD5_DIGEST_SIZE,
>   1705			.min_hw_rev = CC_HW_REV_630,
>   1706		},
>   1707		{
>   1708			.name = "sm3",
>   1709			.driver_name = "sm3-ccree",
>   1710			.blocksize = SM3_BLOCK_SIZE,
>   1711			.is_mac = false,
>   1712			.template_ahash = {
>   1713				.init = cc_hash_init,
>   1714				.update = cc_hash_update,
>   1715				.final = cc_hash_final,
>   1716				.finup = cc_hash_finup,
>   1717				.digest = cc_hash_digest,
>   1718				.export = cc_hash_export,
>   1719				.import = cc_hash_import,
>   1720				.setkey = cc_hash_setkey,
>   1721				.halg = {
>   1722					.digestsize = SM3_DIGEST_SIZE,
>   1723					.statesize =
> CC_STATE_SIZE(SM3_DIGEST_SIZE),
>   1724				},
>   1725			},
>   1726			.hash_mode = DRV_HASH_SM3,
>   1727			.hw_mode = DRV_HASH_HW_SM3,
>   1728			.inter_digestsize = SM3_DIGEST_SIZE,
> > 1729			.min_hw_rev = CC_HW_REV_713,
>   1730		},
>   1731		{
>   1732			.mac_name = "xcbc(aes)",
>   1733			.mac_driver_name = "xcbc-aes-ccree",
>   1734			.blocksize = AES_BLOCK_SIZE,
>   1735			.is_mac = true,
>   1736			.template_ahash = {
>   1737				.init = cc_hash_init,
>   1738				.update = cc_mac_update,
>   1739				.final = cc_mac_final,
>   1740				.finup = cc_mac_finup,
>   1741				.digest = cc_mac_digest,
>   1742				.setkey = cc_xcbc_setkey,
>   1743				.export = cc_hash_export,
>   1744				.import = cc_hash_import,
>   1745				.halg = {
>   1746					.digestsize = AES_BLOCK_SIZE,
>   1747					.statesize =
> CC_STATE_SIZE(AES_BLOCK_SIZE),
>   1748				},
>   1749			},
>   1750			.hash_mode = DRV_HASH_NULL,
>   1751			.hw_mode = DRV_CIPHER_XCBC_MAC,
>   1752			.inter_digestsize = AES_BLOCK_SIZE,
>   1753			.min_hw_rev = CC_HW_REV_630,
>   1754		},
>   1755		{
>   1756			.mac_name = "cmac(aes)",
>   1757			.mac_driver_name = "cmac-aes-ccree",
>   1758			.blocksize = AES_BLOCK_SIZE,
>   1759			.is_mac = true,
>   1760			.template_ahash = {
>   1761				.init = cc_hash_init,
>   1762				.update = cc_mac_update,
>   1763				.final = cc_mac_final,
>   1764				.finup = cc_mac_finup,
>   1765				.digest = cc_mac_digest,
>   1766				.setkey = cc_cmac_setkey,
>   1767				.export = cc_hash_export,
>   1768				.import = cc_hash_import,
>   1769				.halg = {
>   1770					.digestsize = AES_BLOCK_SIZE,
>   1771					.statesize =
> CC_STATE_SIZE(AES_BLOCK_SIZE),
>   1772				},
>   1773			},
>   1774			.hash_mode = DRV_HASH_NULL,
>   1775			.hw_mode = DRV_CIPHER_CMAC,
>   1776			.inter_digestsize = AES_BLOCK_SIZE,
>   1777			.min_hw_rev = CC_HW_REV_630,
>   1778		},
>   1779	};
>   1780
>   1781	static struct cc_hash_alg *cc_alloc_hash_alg(struct cc_hash_template
> *template,
>   1782						     struct device *dev, bool
> keyed)
>   1783	{
>   1784		struct cc_hash_alg *t_crypto_alg;
>   1785		struct crypto_alg *alg;
>   1786		struct ahash_alg *halg;
>   1787
>   1788		t_crypto_alg = kzalloc(sizeof(*t_crypto_alg), GFP_KERNEL);
>   1789		if (!t_crypto_alg)
>   1790			return ERR_PTR(-ENOMEM);
>   1791
>   1792		t_crypto_alg->ahash_alg = template->template_ahash;
>   1793		halg = &t_crypto_alg->ahash_alg;
>   1794		alg = &halg->halg.base;
>   1795
>   1796		if (keyed) {
>   1797			snprintf(alg->cra_name, CRYPTO_MAX_ALG_NAME,
> "%s",
>   1798				 template->mac_name);
>   1799			snprintf(alg->cra_driver_name,
> CRYPTO_MAX_ALG_NAME, "%s",
>   1800				 template->mac_driver_name);
>   1801		} else {
>   1802			halg->setkey = NULL;
>   1803			snprintf(alg->cra_name, CRYPTO_MAX_ALG_NAME,
> "%s",
>   1804				 template->name);
>   1805			snprintf(alg->cra_driver_name,
> CRYPTO_MAX_ALG_NAME, "%s",
>   1806				 template->driver_name);
>   1807		}
>   1808		alg->cra_module = THIS_MODULE;
>   1809		alg->cra_ctxsize = sizeof(struct cc_hash_ctx);
>   1810		alg->cra_priority = CC_CRA_PRIO;
>   1811		alg->cra_blocksize = template->blocksize;
>   1812		alg->cra_alignmask = 0;
>   1813		alg->cra_exit = cc_cra_exit;
>   1814
>   1815		alg->cra_init = cc_cra_init;
>   1816		alg->cra_flags = CRYPTO_ALG_ASYNC |
> CRYPTO_ALG_KERN_DRIVER_ONLY;
>   1817
>   1818		t_crypto_alg->hash_mode = template->hash_mode;
>   1819		t_crypto_alg->hw_mode = template->hw_mode;
>   1820		t_crypto_alg->inter_digestsize = template->inter_digestsize;
>   1821
>   1822		return t_crypto_alg;
>   1823	}
>   1824
>   1825	int cc_init_hash_sram(struct cc_drvdata *drvdata)
>   1826	{
>   1827		struct cc_hash_handle *hash_handle = drvdata->hash_handle;
>   1828		cc_sram_addr_t sram_buff_ofs = hash_handle-
> >digest_len_sram_addr;
>   1829		unsigned int larval_seq_len = 0;
>   1830		struct cc_hw_desc larval_seq[CC_DIGEST_SIZE_MAX /
> sizeof(u32)];
>   1831		bool large_sha_supported = (drvdata->hw_rev >=
> CC_HW_REV_712);
> > 1832		bool sm3_supported = (drvdata->hw_rev >= CC_HW_REV_713);
>   1833		int rc = 0;
>   1834
>   1835		/* Copy-to-sram digest-len */
>   1836		cc_set_sram_desc(digest_len_init, sram_buff_ofs,
>   1837				 ARRAY_SIZE(digest_len_init), larval_seq,
>   1838				 &larval_seq_len);
>   1839		rc = send_request_init(drvdata, larval_seq, larval_seq_len);
>   1840		if (rc)
>   1841			goto init_digest_const_err;
>   1842
>   1843		sram_buff_ofs += sizeof(digest_len_init);
>   1844		larval_seq_len = 0;
>   1845
>   1846		if (large_sha_supported) {
>   1847			/* Copy-to-sram digest-len for sha384/512 */
>   1848			cc_set_sram_desc(digest_len_sha512_init,
> sram_buff_ofs,
>   1849					 ARRAY_SIZE(digest_len_sha512_init),
>   1850					 larval_seq, &larval_seq_len);
>   1851			rc = send_request_init(drvdata, larval_seq,
> larval_seq_len);
>   1852			if (rc)
>   1853				goto init_digest_const_err;
>   1854
>   1855			sram_buff_ofs += sizeof(digest_len_sha512_init);
>   1856			larval_seq_len = 0;
>   1857		}
>   1858
>   1859		/* The initial digests offset */
>   1860		hash_handle->larval_digest_sram_addr = sram_buff_ofs;
>   1861
>   1862		/* Copy-to-sram initial SHA* digests */
>   1863		cc_set_sram_desc(md5_init, sram_buff_ofs,
> ARRAY_SIZE(md5_init),
>   1864				 larval_seq, &larval_seq_len);
>   1865		rc = send_request_init(drvdata, larval_seq, larval_seq_len);
>   1866		if (rc)
>   1867			goto init_digest_const_err;
>   1868		sram_buff_ofs += sizeof(md5_init);
>   1869		larval_seq_len = 0;
>   1870
>   1871		cc_set_sram_desc(sha1_init, sram_buff_ofs,
>   1872				 ARRAY_SIZE(sha1_init), larval_seq,
>   1873				 &larval_seq_len);
>   1874		rc = send_request_init(drvdata, larval_seq, larval_seq_len);
>   1875		if (rc)
>   1876			goto init_digest_const_err;
>   1877		sram_buff_ofs += sizeof(sha1_init);
>   1878		larval_seq_len = 0;
>   1879
>   1880		cc_set_sram_desc(sha224_init, sram_buff_ofs,
>   1881				 ARRAY_SIZE(sha224_init), larval_seq,
>   1882				 &larval_seq_len);
>   1883		rc = send_request_init(drvdata, larval_seq, larval_seq_len);
>   1884		if (rc)
>   1885			goto init_digest_const_err;
>   1886		sram_buff_ofs += sizeof(sha224_init);
>   1887		larval_seq_len = 0;
>   1888
>   1889		cc_set_sram_desc(sha256_init, sram_buff_ofs,
>   1890				 ARRAY_SIZE(sha256_init), larval_seq,
>   1891				 &larval_seq_len);
>   1892		rc = send_request_init(drvdata, larval_seq, larval_seq_len);
>   1893		if (rc)
>   1894			goto init_digest_const_err;
>   1895		sram_buff_ofs += sizeof(sha256_init);
>   1896		larval_seq_len = 0;
>   1897
>   1898		if (sm3_supported) {
>   1899			cc_set_sram_desc(sm3_init, sram_buff_ofs,
>   1900					 ARRAY_SIZE(sm3_init), larval_seq,
>   1901					 &larval_seq_len);
>   1902			rc = send_request_init(drvdata, larval_seq,
> larval_seq_len);
>   1903			if (rc)
>   1904				goto init_digest_const_err;
>   1905			sram_buff_ofs += sizeof(sm3_init);
>   1906			larval_seq_len = 0;
>   1907		}
>   1908
>   1909		if (large_sha_supported) {
>   1910			cc_set_sram_desc((u32 *)sha384_init, sram_buff_ofs,
>   1911					 (ARRAY_SIZE(sha384_init) * 2),
> larval_seq,
>   1912					 &larval_seq_len);
>   1913			rc = send_request_init(drvdata, larval_seq,
> larval_seq_len);
>   1914			if (rc)
>   1915				goto init_digest_const_err;
>   1916			sram_buff_ofs += sizeof(sha384_init);
>   1917			larval_seq_len = 0;
>   1918
>   1919			cc_set_sram_desc((u32 *)sha512_init, sram_buff_ofs,
>   1920					 (ARRAY_SIZE(sha512_init) * 2),
> larval_seq,
>   1921					 &larval_seq_len);
>   1922			rc = send_request_init(drvdata, larval_seq,
> larval_seq_len);
>   1923			if (rc)
>   1924				goto init_digest_const_err;
>   1925		}
>   1926
>   1927	init_digest_const_err:
>   1928		return rc;
>   1929	}
>   1930
> 
> ---
> 0-DAY kernel test infrastructure                Open Source Technology Center
> https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ