All of lore.kernel.org
 help / color / mirror / Atom feed
* [intel-linux-intel-lts:5.10/yocto 107/128] drivers/char/rpmb/rpmb_sim.c:340 rpmb_do_read_data() warn: missing error code 'ret'
@ 2021-02-20 12:28 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2021-02-20 12:28 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 6624 bytes --]

CC: kbuild-all(a)lists.01.org
TO: Tomas Winkler <tomas.winkler@intel.com>
CC: "Dutta, Ranjan" <ranjan.dutta@intel.com>
CC: Alexander Usyskin <alexander.usyskin@intel.com>

tree:   https://github.com/intel/linux-intel-lts.git 5.10/yocto
head:   c70201d62e685bc8d8cb5c2115a3f4ef239012cf
commit: 30b688d7b09e8e74598d2d270313b761106e3f84 [107/128] char: rpmb: add RPMB simulation device
:::::: branch date: 2 weeks ago
:::::: commit date: 2 weeks ago
config: h8300-randconfig-m031-20210220 (attached as .config)
compiler: h8300-linux-gcc (GCC) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

smatch warnings:
drivers/char/rpmb/rpmb_sim.c:340 rpmb_do_read_data() warn: missing error code 'ret'

vim +/ret +340 drivers/char/rpmb/rpmb_sim.c

30b688d7b09e8e Tomas Winkler 2016-02-28  304  
30b688d7b09e8e Tomas Winkler 2016-02-28  305  static int rpmb_do_read_data(struct rpmb_sim_dev *rsdev,
30b688d7b09e8e Tomas Winkler 2016-02-28  306  			     struct rpmb_frame_jdec *in_frame, u32 cnt)
30b688d7b09e8e Tomas Winkler 2016-02-28  307  {
30b688d7b09e8e Tomas Winkler 2016-02-28  308  	struct rpmb_frame_jdec *res_frame = rsdev->res_frames;
30b688d7b09e8e Tomas Winkler 2016-02-28  309  	struct rpmb_frame_jdec *out_frames = NULL;
30b688d7b09e8e Tomas Winkler 2016-02-28  310  	u8 mac[32];
30b688d7b09e8e Tomas Winkler 2016-02-28  311  	u16 req, err, addr, blks;
30b688d7b09e8e Tomas Winkler 2016-02-28  312  	unsigned int i;
30b688d7b09e8e Tomas Winkler 2016-02-28  313  	int ret;
30b688d7b09e8e Tomas Winkler 2016-02-28  314  
30b688d7b09e8e Tomas Winkler 2016-02-28  315  	req = be16_to_cpu(in_frame->req_resp);
30b688d7b09e8e Tomas Winkler 2016-02-28  316  	if (req != RPMB_READ_DATA)
30b688d7b09e8e Tomas Winkler 2016-02-28  317  		return -EINVAL;
30b688d7b09e8e Tomas Winkler 2016-02-28  318  
30b688d7b09e8e Tomas Winkler 2016-02-28  319  	/* eMMC intentionally set 0 here */
30b688d7b09e8e Tomas Winkler 2016-02-28  320  	blks = be16_to_cpu(in_frame->block_count);
30b688d7b09e8e Tomas Winkler 2016-02-28  321  	blks = blks ?: cnt;
30b688d7b09e8e Tomas Winkler 2016-02-28  322  	if (blks > cnt) {
30b688d7b09e8e Tomas Winkler 2016-02-28  323  		dev_err(rsdev->dev, "wrong number of frames cnt %u\n", blks);
30b688d7b09e8e Tomas Winkler 2016-02-28  324  		ret = -EINVAL;
30b688d7b09e8e Tomas Winkler 2016-02-28  325  		err = RPMB_ERR_GENERAL;
30b688d7b09e8e Tomas Winkler 2016-02-28  326  		goto out;
30b688d7b09e8e Tomas Winkler 2016-02-28  327  	}
30b688d7b09e8e Tomas Winkler 2016-02-28  328  
30b688d7b09e8e Tomas Winkler 2016-02-28  329  	out_frames = kcalloc(blks, sizeof(*out_frames), GFP_KERNEL);
30b688d7b09e8e Tomas Winkler 2016-02-28  330  	if (!out_frames) {
30b688d7b09e8e Tomas Winkler 2016-02-28  331  		ret = -ENOMEM;
30b688d7b09e8e Tomas Winkler 2016-02-28  332  		err = RPMB_ERR_READ;
30b688d7b09e8e Tomas Winkler 2016-02-28  333  		goto out;
30b688d7b09e8e Tomas Winkler 2016-02-28  334  	}
30b688d7b09e8e Tomas Winkler 2016-02-28  335  
30b688d7b09e8e Tomas Winkler 2016-02-28  336  	ret = 0;
30b688d7b09e8e Tomas Winkler 2016-02-28  337  	addr = be16_to_cpu(in_frame[0].addr);
30b688d7b09e8e Tomas Winkler 2016-02-28  338  	if (addr >= rsdev->blkcnt) {
30b688d7b09e8e Tomas Winkler 2016-02-28  339  		err = RPMB_ERR_ADDRESS;
30b688d7b09e8e Tomas Winkler 2016-02-28 @340  		goto out;
30b688d7b09e8e Tomas Winkler 2016-02-28  341  	}
30b688d7b09e8e Tomas Winkler 2016-02-28  342  
30b688d7b09e8e Tomas Winkler 2016-02-28  343  	if (addr + blks > rsdev->blkcnt) {
30b688d7b09e8e Tomas Winkler 2016-02-28  344  		err = RPMB_ERR_READ;
30b688d7b09e8e Tomas Winkler 2016-02-28  345  		goto out;
30b688d7b09e8e Tomas Winkler 2016-02-28  346  	}
30b688d7b09e8e Tomas Winkler 2016-02-28  347  
30b688d7b09e8e Tomas Winkler 2016-02-28  348  	dev_dbg(rsdev->dev, "reading = %u blocks at addr = 0x%X\n", blks, addr);
30b688d7b09e8e Tomas Winkler 2016-02-28  349  	for (i = 0; i < blks; i++) {
30b688d7b09e8e Tomas Winkler 2016-02-28  350  		memcpy(out_frames[i].data, rsdev->da[addr + i].data, BLK_UNIT);
30b688d7b09e8e Tomas Winkler 2016-02-28  351  		memcpy(out_frames[i].nonce, in_frame[0].nonce, 16);
30b688d7b09e8e Tomas Winkler 2016-02-28  352  		out_frames[i].req_resp = req_to_resp(req);
30b688d7b09e8e Tomas Winkler 2016-02-28  353  		out_frames[i].addr = in_frame[0].addr;
30b688d7b09e8e Tomas Winkler 2016-02-28  354  		out_frames[i].block_count = cpu_to_be16(blks);
30b688d7b09e8e Tomas Winkler 2016-02-28  355  	}
30b688d7b09e8e Tomas Winkler 2016-02-28  356  
30b688d7b09e8e Tomas Winkler 2016-02-28  357  	if (rpmb_sim_calc_hmac(rsdev, out_frames, blks, mac)) {
30b688d7b09e8e Tomas Winkler 2016-02-28  358  		err = RPMB_ERR_AUTH;
30b688d7b09e8e Tomas Winkler 2016-02-28  359  		goto out;
30b688d7b09e8e Tomas Winkler 2016-02-28  360  	}
30b688d7b09e8e Tomas Winkler 2016-02-28  361  
30b688d7b09e8e Tomas Winkler 2016-02-28  362  	memcpy(out_frames[blks - 1].key_mac, mac, sizeof(mac));
30b688d7b09e8e Tomas Winkler 2016-02-28  363  
30b688d7b09e8e Tomas Winkler 2016-02-28  364  	err = RPMB_ERR_OK;
30b688d7b09e8e Tomas Winkler 2016-02-28  365  	for (i = 0; i < blks; i++)
30b688d7b09e8e Tomas Winkler 2016-02-28  366  		out_frames[i].result = op_result(rsdev, err);
30b688d7b09e8e Tomas Winkler 2016-02-28  367  
30b688d7b09e8e Tomas Winkler 2016-02-28  368  	rsdev->out_frames = out_frames;
30b688d7b09e8e Tomas Winkler 2016-02-28  369  	rsdev->out_frames_cnt = cnt;
30b688d7b09e8e Tomas Winkler 2016-02-28  370  
30b688d7b09e8e Tomas Winkler 2016-02-28  371  	return 0;
30b688d7b09e8e Tomas Winkler 2016-02-28  372  
30b688d7b09e8e Tomas Winkler 2016-02-28  373  out:
30b688d7b09e8e Tomas Winkler 2016-02-28  374  	memset(res_frame, 0, sizeof(*res_frame));
30b688d7b09e8e Tomas Winkler 2016-02-28  375  	res_frame->req_resp = req_to_resp(req);
30b688d7b09e8e Tomas Winkler 2016-02-28  376  	res_frame->result = op_result(rsdev, err);
30b688d7b09e8e Tomas Winkler 2016-02-28  377  	kfree(out_frames);
30b688d7b09e8e Tomas Winkler 2016-02-28  378  	rsdev->out_frames = res_frame;
30b688d7b09e8e Tomas Winkler 2016-02-28  379  	rsdev->out_frames_cnt = 1;
30b688d7b09e8e Tomas Winkler 2016-02-28  380  
30b688d7b09e8e Tomas Winkler 2016-02-28  381  	return ret;
30b688d7b09e8e Tomas Winkler 2016-02-28  382  }
30b688d7b09e8e Tomas Winkler 2016-02-28  383  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 23472 bytes --]

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2021-02-20 12:28 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-02-20 12:28 [intel-linux-intel-lts:5.10/yocto 107/128] drivers/char/rpmb/rpmb_sim.c:340 rpmb_do_read_data() warn: missing error code 'ret' 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.