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]

Attachment: .config.gz
Description: application/gzip

_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to