[cryptodev:master 2/53] drivers/crypto/inside-secure/safexcel_hash.c:1945:34: sparse: sparse: incorrect type in assignment (different base types)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



tree:   https://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git master
head:   4fd7d7befdb531920cae8f78afd4938e4a25e421
commit: b98687bb3b10a0e261c445aac227476bf11dab08 [2/53] crypto: inside-secure - Added support for the AES CBCMAC ahash
reproduce:
        # apt-get install sparse
        # sparse version: v0.6.1-rc1-42-g38eda53-dirty
        git checkout b98687bb3b10a0e261c445aac227476bf11dab08
        make ARCH=x86_64 allmodconfig
        make C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__'

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@xxxxxxxxx>


sparse warnings: (new ones prefixed by >>)

   drivers/crypto/inside-secure/safexcel_hash.c:1845:25: sparse: sparse: incorrect type in assignment (different base types) @@    expected unsigned int @@    got restricted __le32unsigned int @@
   drivers/crypto/inside-secure/safexcel_hash.c:1845:25: sparse:    expected unsigned int
   drivers/crypto/inside-secure/safexcel_hash.c:1845:25: sparse:    got restricted __le32 [usertype]
>> drivers/crypto/inside-secure/safexcel_hash.c:1945:34: sparse: sparse: incorrect type in assignment (different base types) @@    expected unsigned int @@    got restricted __be32unsigned int @@
   drivers/crypto/inside-secure/safexcel_hash.c:1945:34: sparse:    expected unsigned int
>> drivers/crypto/inside-secure/safexcel_hash.c:1945:34: sparse:    got restricted __be32 [usertype]

vim +1945 drivers/crypto/inside-secure/safexcel_hash.c

  1836	
  1837	static int safexcel_crc32_init(struct ahash_request *areq)
  1838	{
  1839		struct safexcel_ahash_ctx *ctx = crypto_ahash_ctx(crypto_ahash_reqtfm(areq));
  1840		struct safexcel_ahash_req *req = ahash_request_ctx(areq);
  1841	
  1842		memset(req, 0, sizeof(*req));
  1843	
  1844		/* Start from loaded key */
> 1845		req->state[0]	= cpu_to_le32(~ctx->ipad[0]);
  1846		/* Set processed to non-zero to enable invalidation detection */
  1847		req->len	= sizeof(u32);
  1848		req->processed	= sizeof(u32);
  1849	
  1850		ctx->alg = CONTEXT_CONTROL_CRYPTO_ALG_CRC32;
  1851		req->digest = CONTEXT_CONTROL_DIGEST_XCM;
  1852		req->state_sz = sizeof(u32);
  1853		req->block_sz = sizeof(u32);
  1854	
  1855		return 0;
  1856	}
  1857	
  1858	static int safexcel_crc32_setkey(struct crypto_ahash *tfm, const u8 *key,
  1859					 unsigned int keylen)
  1860	{
  1861		struct safexcel_ahash_ctx *ctx = crypto_tfm_ctx(crypto_ahash_tfm(tfm));
  1862	
  1863		if (keylen != sizeof(u32)) {
  1864			crypto_ahash_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
  1865			return -EINVAL;
  1866		}
  1867	
  1868		memcpy(ctx->ipad, key, sizeof(u32));
  1869		return 0;
  1870	}
  1871	
  1872	static int safexcel_crc32_digest(struct ahash_request *areq)
  1873	{
  1874		return safexcel_crc32_init(areq) ?: safexcel_ahash_finup(areq);
  1875	}
  1876	
  1877	struct safexcel_alg_template safexcel_alg_crc32 = {
  1878		.type = SAFEXCEL_ALG_TYPE_AHASH,
  1879		.algo_mask = 0,
  1880		.alg.ahash = {
  1881			.init = safexcel_crc32_init,
  1882			.update = safexcel_ahash_update,
  1883			.final = safexcel_ahash_final,
  1884			.finup = safexcel_ahash_finup,
  1885			.digest = safexcel_crc32_digest,
  1886			.setkey = safexcel_crc32_setkey,
  1887			.export = safexcel_ahash_export,
  1888			.import = safexcel_ahash_import,
  1889			.halg = {
  1890				.digestsize = sizeof(u32),
  1891				.statesize = sizeof(struct safexcel_ahash_export_state),
  1892				.base = {
  1893					.cra_name = "crc32",
  1894					.cra_driver_name = "safexcel-crc32",
  1895					.cra_priority = SAFEXCEL_CRA_PRIORITY,
  1896					.cra_flags = CRYPTO_ALG_OPTIONAL_KEY |
  1897						     CRYPTO_ALG_ASYNC |
  1898						     CRYPTO_ALG_KERN_DRIVER_ONLY,
  1899					.cra_blocksize = 1,
  1900					.cra_ctxsize = sizeof(struct safexcel_ahash_ctx),
  1901					.cra_init = safexcel_crc32_cra_init,
  1902					.cra_exit = safexcel_ahash_cra_exit,
  1903					.cra_module = THIS_MODULE,
  1904				},
  1905			},
  1906		},
  1907	};
  1908	
  1909	static int safexcel_cbcmac_init(struct ahash_request *areq)
  1910	{
  1911		struct safexcel_ahash_ctx *ctx = crypto_ahash_ctx(crypto_ahash_reqtfm(areq));
  1912		struct safexcel_ahash_req *req = ahash_request_ctx(areq);
  1913	
  1914		memset(req, 0, sizeof(*req));
  1915	
  1916		/* Start from loaded keys */
  1917		memcpy(req->state, ctx->ipad, ctx->key_sz);
  1918		/* Set processed to non-zero to enable invalidation detection */
  1919		req->len	= AES_BLOCK_SIZE;
  1920		req->processed	= AES_BLOCK_SIZE;
  1921	
  1922		req->digest   = CONTEXT_CONTROL_DIGEST_XCM;
  1923		req->state_sz = ctx->key_sz;
  1924		req->block_sz = AES_BLOCK_SIZE;
  1925		req->xcbcmac  = true;
  1926	
  1927		return 0;
  1928	}
  1929	
  1930	static int safexcel_cbcmac_setkey(struct crypto_ahash *tfm, const u8 *key,
  1931					 unsigned int len)
  1932	{
  1933		struct safexcel_ahash_ctx *ctx = crypto_tfm_ctx(crypto_ahash_tfm(tfm));
  1934		struct crypto_aes_ctx aes;
  1935		int ret, i;
  1936	
  1937		ret = aes_expandkey(&aes, key, len);
  1938		if (ret) {
  1939			crypto_ahash_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
  1940			return ret;
  1941		}
  1942	
  1943		memset(ctx->ipad, 0, 2 * AES_BLOCK_SIZE);
  1944		for (i = 0; i < len / sizeof(u32); i++)
> 1945			ctx->ipad[i + 8] = cpu_to_be32(aes.key_enc[i]);
  1946	
  1947		if (len == AES_KEYSIZE_192) {
  1948			ctx->alg    = CONTEXT_CONTROL_CRYPTO_ALG_XCBC192;
  1949			ctx->key_sz = AES_MAX_KEY_SIZE + 2 * AES_BLOCK_SIZE;
  1950		} else if (len == AES_KEYSIZE_256) {
  1951			ctx->alg    = CONTEXT_CONTROL_CRYPTO_ALG_XCBC256;
  1952			ctx->key_sz = AES_MAX_KEY_SIZE + 2 * AES_BLOCK_SIZE;
  1953		} else {
  1954			ctx->alg    = CONTEXT_CONTROL_CRYPTO_ALG_XCBC128;
  1955			ctx->key_sz = AES_MIN_KEY_SIZE + 2 * AES_BLOCK_SIZE;
  1956		}
  1957	
  1958		memzero_explicit(&aes, sizeof(aes));
  1959		return 0;
  1960	}
  1961	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation



[Index of Archives]     [Kernel]     [Gnu Classpath]     [Gnu Crypto]     [DM Crypt]     [Netfilter]     [Bugtraq]

  Powered by Linux