All of lore.kernel.org
 help / color / mirror / Atom feed
* [linux-next:master 5413/11428] crypto/lskcipher.c:639 lskcipher_alloc_instance_simple() warn: passing zero to 'ERR_PTR'
@ 2023-10-11 19:19 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2023-10-11 19:19 UTC (permalink / raw)
  To: oe-kbuild; +Cc: lkp, Dan Carpenter

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: Linux Memory Management List <linux-mm@kvack.org>
TO: Herbert Xu <herbert@gondor.apana.org.au>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head:   2933a1156742d8c47550493a77af8e2d81cf3c84
commit: 8aee5d4ebd113319f6882b2cd0475d270fdc0d41 [5413/11428] crypto: lskcipher - Add compatibility wrapper around ECB
:::::: branch date: 13 hours ago
:::::: commit date: 3 weeks ago
config: i386-randconfig-141-20230921 (https://download.01.org/0day-ci/archive/20231012/202310120306.SHIm2nZH-lkp@intel.com/config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce: (https://download.01.org/0day-ci/archive/20231012/202310120306.SHIm2nZH-lkp@intel.com/reproduce)

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/202310120306.SHIm2nZH-lkp@intel.com/

smatch warnings:
crypto/lskcipher.c:639 lskcipher_alloc_instance_simple() warn: passing zero to 'ERR_PTR'

vim +/ERR_PTR +639 crypto/lskcipher.c

31865c4c4db2b7 Herbert Xu 2023-09-14  515  
31865c4c4db2b7 Herbert Xu 2023-09-14  516  /**
31865c4c4db2b7 Herbert Xu 2023-09-14  517   * lskcipher_alloc_instance_simple - allocate instance of simple block cipher
31865c4c4db2b7 Herbert Xu 2023-09-14  518   *
31865c4c4db2b7 Herbert Xu 2023-09-14  519   * Allocate an lskcipher_instance for a simple block cipher mode of operation,
31865c4c4db2b7 Herbert Xu 2023-09-14  520   * e.g. cbc or ecb.  The instance context will have just a single crypto_spawn,
31865c4c4db2b7 Herbert Xu 2023-09-14  521   * that for the underlying cipher.  The {min,max}_keysize, ivsize, blocksize,
31865c4c4db2b7 Herbert Xu 2023-09-14  522   * alignmask, and priority are set from the underlying cipher but can be
31865c4c4db2b7 Herbert Xu 2023-09-14  523   * overridden if needed.  The tfm context defaults to
31865c4c4db2b7 Herbert Xu 2023-09-14  524   * struct crypto_lskcipher *, and default ->setkey(), ->init(), and
31865c4c4db2b7 Herbert Xu 2023-09-14  525   * ->exit() methods are installed.
31865c4c4db2b7 Herbert Xu 2023-09-14  526   *
31865c4c4db2b7 Herbert Xu 2023-09-14  527   * @tmpl: the template being instantiated
31865c4c4db2b7 Herbert Xu 2023-09-14  528   * @tb: the template parameters
31865c4c4db2b7 Herbert Xu 2023-09-14  529   *
31865c4c4db2b7 Herbert Xu 2023-09-14  530   * Return: a pointer to the new instance, or an ERR_PTR().  The caller still
31865c4c4db2b7 Herbert Xu 2023-09-14  531   *	   needs to register the instance.
31865c4c4db2b7 Herbert Xu 2023-09-14  532   */
31865c4c4db2b7 Herbert Xu 2023-09-14  533  struct lskcipher_instance *lskcipher_alloc_instance_simple(
31865c4c4db2b7 Herbert Xu 2023-09-14  534  	struct crypto_template *tmpl, struct rtattr **tb)
31865c4c4db2b7 Herbert Xu 2023-09-14  535  {
31865c4c4db2b7 Herbert Xu 2023-09-14  536  	u32 mask;
31865c4c4db2b7 Herbert Xu 2023-09-14  537  	struct lskcipher_instance *inst;
31865c4c4db2b7 Herbert Xu 2023-09-14  538  	struct crypto_lskcipher_spawn *spawn;
8aee5d4ebd1133 Herbert Xu 2023-09-14  539  	char ecb_name[CRYPTO_MAX_ALG_NAME];
31865c4c4db2b7 Herbert Xu 2023-09-14  540  	struct lskcipher_alg *cipher_alg;
8aee5d4ebd1133 Herbert Xu 2023-09-14  541  	const char *cipher_name;
31865c4c4db2b7 Herbert Xu 2023-09-14  542  	int err;
31865c4c4db2b7 Herbert Xu 2023-09-14  543  
31865c4c4db2b7 Herbert Xu 2023-09-14  544  	err = crypto_check_attr_type(tb, CRYPTO_ALG_TYPE_LSKCIPHER, &mask);
31865c4c4db2b7 Herbert Xu 2023-09-14  545  	if (err)
31865c4c4db2b7 Herbert Xu 2023-09-14  546  		return ERR_PTR(err);
31865c4c4db2b7 Herbert Xu 2023-09-14  547  
8aee5d4ebd1133 Herbert Xu 2023-09-14  548  	cipher_name = crypto_attr_alg_name(tb[1]);
8aee5d4ebd1133 Herbert Xu 2023-09-14  549  	if (IS_ERR(cipher_name))
8aee5d4ebd1133 Herbert Xu 2023-09-14  550  		return ERR_CAST(cipher_name);
8aee5d4ebd1133 Herbert Xu 2023-09-14  551  
31865c4c4db2b7 Herbert Xu 2023-09-14  552  	inst = kzalloc(sizeof(*inst) + sizeof(*spawn), GFP_KERNEL);
31865c4c4db2b7 Herbert Xu 2023-09-14  553  	if (!inst)
31865c4c4db2b7 Herbert Xu 2023-09-14  554  		return ERR_PTR(-ENOMEM);
31865c4c4db2b7 Herbert Xu 2023-09-14  555  
31865c4c4db2b7 Herbert Xu 2023-09-14  556  	spawn = lskcipher_instance_ctx(inst);
31865c4c4db2b7 Herbert Xu 2023-09-14  557  	err = crypto_grab_lskcipher(spawn,
31865c4c4db2b7 Herbert Xu 2023-09-14  558  				    lskcipher_crypto_instance(inst),
8aee5d4ebd1133 Herbert Xu 2023-09-14  559  				    cipher_name, 0, mask);
8aee5d4ebd1133 Herbert Xu 2023-09-14  560  
8aee5d4ebd1133 Herbert Xu 2023-09-14  561  	ecb_name[0] = 0;
8aee5d4ebd1133 Herbert Xu 2023-09-14  562  	if (err == -ENOENT && !!memcmp(tmpl->name, "ecb", 4)) {
8aee5d4ebd1133 Herbert Xu 2023-09-14  563  		err = -ENAMETOOLONG;
8aee5d4ebd1133 Herbert Xu 2023-09-14  564  		if (snprintf(ecb_name, CRYPTO_MAX_ALG_NAME, "ecb(%s)",
8aee5d4ebd1133 Herbert Xu 2023-09-14  565  			     cipher_name) >= CRYPTO_MAX_ALG_NAME)
8aee5d4ebd1133 Herbert Xu 2023-09-14  566  			goto err_free_inst;
8aee5d4ebd1133 Herbert Xu 2023-09-14  567  
8aee5d4ebd1133 Herbert Xu 2023-09-14  568  		err = crypto_grab_lskcipher(spawn,
8aee5d4ebd1133 Herbert Xu 2023-09-14  569  					    lskcipher_crypto_instance(inst),
8aee5d4ebd1133 Herbert Xu 2023-09-14  570  					    ecb_name, 0, mask);
8aee5d4ebd1133 Herbert Xu 2023-09-14  571  	}
8aee5d4ebd1133 Herbert Xu 2023-09-14  572  
31865c4c4db2b7 Herbert Xu 2023-09-14  573  	if (err)
31865c4c4db2b7 Herbert Xu 2023-09-14  574  		goto err_free_inst;
8aee5d4ebd1133 Herbert Xu 2023-09-14  575  
31865c4c4db2b7 Herbert Xu 2023-09-14  576  	cipher_alg = crypto_lskcipher_spawn_alg(spawn);
31865c4c4db2b7 Herbert Xu 2023-09-14  577  
31865c4c4db2b7 Herbert Xu 2023-09-14  578  	err = crypto_inst_setname(lskcipher_crypto_instance(inst), tmpl->name,
31865c4c4db2b7 Herbert Xu 2023-09-14  579  				  &cipher_alg->co.base);
31865c4c4db2b7 Herbert Xu 2023-09-14  580  	if (err)
31865c4c4db2b7 Herbert Xu 2023-09-14  581  		goto err_free_inst;
31865c4c4db2b7 Herbert Xu 2023-09-14  582  
8aee5d4ebd1133 Herbert Xu 2023-09-14  583  	if (ecb_name[0]) {
8aee5d4ebd1133 Herbert Xu 2023-09-14  584  		int len;
8aee5d4ebd1133 Herbert Xu 2023-09-14  585  
8aee5d4ebd1133 Herbert Xu 2023-09-14  586  		len = strscpy(ecb_name, &cipher_alg->co.base.cra_name[4],
8aee5d4ebd1133 Herbert Xu 2023-09-14  587  			      sizeof(ecb_name));
8aee5d4ebd1133 Herbert Xu 2023-09-14  588  		if (len < 2)
8aee5d4ebd1133 Herbert Xu 2023-09-14  589  			goto err_free_inst;
8aee5d4ebd1133 Herbert Xu 2023-09-14  590  
8aee5d4ebd1133 Herbert Xu 2023-09-14  591  		if (ecb_name[len - 1] != ')')
8aee5d4ebd1133 Herbert Xu 2023-09-14  592  			goto err_free_inst;
8aee5d4ebd1133 Herbert Xu 2023-09-14  593  
8aee5d4ebd1133 Herbert Xu 2023-09-14  594  		ecb_name[len - 1] = 0;
8aee5d4ebd1133 Herbert Xu 2023-09-14  595  
8aee5d4ebd1133 Herbert Xu 2023-09-14  596  		err = -ENAMETOOLONG;
8aee5d4ebd1133 Herbert Xu 2023-09-14  597  		if (snprintf(inst->alg.co.base.cra_name, CRYPTO_MAX_ALG_NAME,
8aee5d4ebd1133 Herbert Xu 2023-09-14  598  			     "%s(%s)", tmpl->name, ecb_name) >=
8aee5d4ebd1133 Herbert Xu 2023-09-14  599  		    CRYPTO_MAX_ALG_NAME)
8aee5d4ebd1133 Herbert Xu 2023-09-14  600  			goto err_free_inst;
8aee5d4ebd1133 Herbert Xu 2023-09-14  601  
8aee5d4ebd1133 Herbert Xu 2023-09-14  602  		if (strcmp(ecb_name, cipher_name) &&
8aee5d4ebd1133 Herbert Xu 2023-09-14  603  		    snprintf(inst->alg.co.base.cra_driver_name,
8aee5d4ebd1133 Herbert Xu 2023-09-14  604  			     CRYPTO_MAX_ALG_NAME,
8aee5d4ebd1133 Herbert Xu 2023-09-14  605  			     "%s(%s)", tmpl->name, cipher_name) >=
8aee5d4ebd1133 Herbert Xu 2023-09-14  606  		    CRYPTO_MAX_ALG_NAME)
8aee5d4ebd1133 Herbert Xu 2023-09-14  607  			goto err_free_inst;
8aee5d4ebd1133 Herbert Xu 2023-09-14  608  	} else {
31865c4c4db2b7 Herbert Xu 2023-09-14  609  		/* Don't allow nesting. */
31865c4c4db2b7 Herbert Xu 2023-09-14  610  		err = -ELOOP;
31865c4c4db2b7 Herbert Xu 2023-09-14  611  		if ((cipher_alg->co.base.cra_flags & CRYPTO_ALG_INSTANCE))
31865c4c4db2b7 Herbert Xu 2023-09-14  612  			goto err_free_inst;
8aee5d4ebd1133 Herbert Xu 2023-09-14  613  	}
31865c4c4db2b7 Herbert Xu 2023-09-14  614  
31865c4c4db2b7 Herbert Xu 2023-09-14  615  	err = -EINVAL;
31865c4c4db2b7 Herbert Xu 2023-09-14  616  	if (cipher_alg->co.ivsize)
31865c4c4db2b7 Herbert Xu 2023-09-14  617  		goto err_free_inst;
31865c4c4db2b7 Herbert Xu 2023-09-14  618  
31865c4c4db2b7 Herbert Xu 2023-09-14  619  	inst->free = lskcipher_free_instance_simple;
31865c4c4db2b7 Herbert Xu 2023-09-14  620  
31865c4c4db2b7 Herbert Xu 2023-09-14  621  	/* Default algorithm properties, can be overridden */
31865c4c4db2b7 Herbert Xu 2023-09-14  622  	inst->alg.co.base.cra_blocksize = cipher_alg->co.base.cra_blocksize;
31865c4c4db2b7 Herbert Xu 2023-09-14  623  	inst->alg.co.base.cra_alignmask = cipher_alg->co.base.cra_alignmask;
31865c4c4db2b7 Herbert Xu 2023-09-14  624  	inst->alg.co.base.cra_priority = cipher_alg->co.base.cra_priority;
31865c4c4db2b7 Herbert Xu 2023-09-14  625  	inst->alg.co.min_keysize = cipher_alg->co.min_keysize;
31865c4c4db2b7 Herbert Xu 2023-09-14  626  	inst->alg.co.max_keysize = cipher_alg->co.max_keysize;
31865c4c4db2b7 Herbert Xu 2023-09-14  627  	inst->alg.co.ivsize = cipher_alg->co.base.cra_blocksize;
31865c4c4db2b7 Herbert Xu 2023-09-14  628  
31865c4c4db2b7 Herbert Xu 2023-09-14  629  	/* Use struct crypto_lskcipher * by default, can be overridden */
31865c4c4db2b7 Herbert Xu 2023-09-14  630  	inst->alg.co.base.cra_ctxsize = sizeof(struct crypto_lskcipher *);
31865c4c4db2b7 Herbert Xu 2023-09-14  631  	inst->alg.setkey = lskcipher_setkey_simple;
31865c4c4db2b7 Herbert Xu 2023-09-14  632  	inst->alg.init = lskcipher_init_tfm_simple;
31865c4c4db2b7 Herbert Xu 2023-09-14  633  	inst->alg.exit = lskcipher_exit_tfm_simple;
31865c4c4db2b7 Herbert Xu 2023-09-14  634  
31865c4c4db2b7 Herbert Xu 2023-09-14  635  	return inst;
31865c4c4db2b7 Herbert Xu 2023-09-14  636  
31865c4c4db2b7 Herbert Xu 2023-09-14  637  err_free_inst:
31865c4c4db2b7 Herbert Xu 2023-09-14  638  	lskcipher_free_instance_simple(inst);
31865c4c4db2b7 Herbert Xu 2023-09-14 @639  	return ERR_PTR(err);

:::::: The code at line 639 was first introduced by commit
:::::: 31865c4c4db2b742fec6ccbff80483fa3e7ab9b9 crypto: skcipher - Add lskcipher

:::::: TO: Herbert Xu <herbert@gondor.apana.org.au>
:::::: 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] only message in thread

only message in thread, other threads:[~2023-10-11 19:19 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-10-11 19:19 [linux-next:master 5413/11428] crypto/lskcipher.c:639 lskcipher_alloc_instance_simple() warn: passing zero to 'ERR_PTR' 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.