tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master head: 469a89fd3bb73bb2eea628da2b3e0f695f80b7ce commit: 6ff265fc5ef660499e0edc4641647e99eed3f519 [1863/3037] scsi: ufs: core: bsg: Add advanced RPMB support in ufs_bsg config: m68k-randconfig-s042-20230106 compiler: m68k-linux-gcc (GCC) 12.1.0 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # apt-get install sparse # sparse version: v0.6.4-39-gce1a6720-dirty # https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=6ff265fc5ef660499e0edc4641647e99eed3f519 git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git git fetch --no-tags linux-next master git checkout 6ff265fc5ef660499e0edc4641647e99eed3f519 # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=m68k olddefconfig COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=m68k SHELL=/bin/bash drivers/nvmem/ drivers/ufs/core/ If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot sparse warnings: (new ones prefixed by >>) >> drivers/ufs/core/ufs_bsg.c:91:25: sparse: sparse: cast to restricted __be16 vim +91 drivers/ufs/core/ufs_bsg.c 71 72 static int ufs_bsg_exec_advanced_rpmb_req(struct ufs_hba *hba, struct bsg_job *job) 73 { 74 struct ufs_rpmb_request *rpmb_request = job->request; 75 struct ufs_rpmb_reply *rpmb_reply = job->reply; 76 struct bsg_buffer *payload = NULL; 77 enum dma_data_direction dir; 78 struct scatterlist *sg_list; 79 int rpmb_req_type; 80 int sg_cnt; 81 int ret; 82 int data_len; 83 84 if (hba->ufs_version < ufshci_version(4, 0) || !hba->dev_info.b_advanced_rpmb_en || 85 !(hba->capabilities & MASK_EHSLUTRD_SUPPORTED)) 86 return -EINVAL; 87 88 if (rpmb_request->ehs_req.length != 2 || rpmb_request->ehs_req.ehs_type != 1) 89 return -EINVAL; 90 > 91 rpmb_req_type = be16_to_cpu(rpmb_request->ehs_req.meta.req_resp_type); 92 93 switch (rpmb_req_type) { 94 case UFS_RPMB_WRITE_KEY: 95 case UFS_RPMB_READ_CNT: 96 case UFS_RPMB_PURGE_ENABLE: 97 dir = DMA_NONE; 98 break; 99 case UFS_RPMB_WRITE: 100 case UFS_RPMB_SEC_CONF_WRITE: 101 dir = DMA_TO_DEVICE; 102 break; 103 case UFS_RPMB_READ: 104 case UFS_RPMB_SEC_CONF_READ: 105 case UFS_RPMB_PURGE_STATUS_READ: 106 dir = DMA_FROM_DEVICE; 107 break; 108 default: 109 return -EINVAL; 110 } 111 112 if (dir != DMA_NONE) { 113 payload = &job->request_payload; 114 if (!payload || !payload->payload_len || !payload->sg_cnt) 115 return -EINVAL; 116 117 sg_cnt = dma_map_sg(hba->host->dma_dev, payload->sg_list, payload->sg_cnt, dir); 118 if (unlikely(!sg_cnt)) 119 return -ENOMEM; 120 sg_list = payload->sg_list; 121 data_len = payload->payload_len; 122 } 123 124 ret = ufshcd_advanced_rpmb_req_handler(hba, &rpmb_request->bsg_request.upiu_req, 125 &rpmb_reply->bsg_reply.upiu_rsp, &rpmb_request->ehs_req, 126 &rpmb_reply->ehs_rsp, sg_cnt, sg_list, dir); 127 128 if (dir != DMA_NONE) { 129 dma_unmap_sg(hba->host->dma_dev, payload->sg_list, payload->sg_cnt, dir); 130 131 if (!ret) 132 rpmb_reply->bsg_reply.reply_payload_rcv_len = data_len; 133 } 134 135 return ret; 136 } 137 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests