CC: [email protected] TO: Tomas Winkler <[email protected]> CC: "Dutta, Ranjan" <[email protected]> CC: Alexander Usyskin <[email protected]>
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 <[email protected]> Reported-by: Dan Carpenter <[email protected]> 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/[email protected]
.config.gz
Description: application/gzip
_______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
