drivers/crypto/xilinx/zynqmp-aes-gcm.c:183:11-12: WARNING opportunity for kfree_sensitive/kvfree_sensitive (memset at line 182)

kernel test robot <[email protected]>
Newsgroups dev.linux.lists.oe-kbuild
Message-ID <[email protected]>
BCC: [email protected]
CC: [email protected]
CC: [email protected]
TO: Harsh Jain <[email protected]>
CC: Herbert Xu <[email protected]>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3
commit: c315cb0005bed288e1db58f52ccd60ec189302d7 crypto: xilinx - Change coherent DMA to streaming DMA API
date:   6 months ago
:::::: branch date: 22 hours ago
:::::: commit date: 6 months ago
config: hexagon-randconfig-r051-20260709 (https://download.01.org/0day-ci/archive/20260712/[email protected]/config)
compiler: clang version 23.0.0git (https://github.com/llvm/llvm-project c279890c85da307abe34f10333442bbf72a60644)

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
| Fixes: c315cb0005be ("crypto: xilinx - Change coherent DMA to streaming DMA API")
| Reported-by: kernel test robot <[email protected]>
| Reported-by: Julia Lawall <[email protected]>
| Closes: https://lore.kernel.org/r/[email protected]/

cocci warnings: (new ones prefixed by >>)
>> drivers/crypto/xilinx/zynqmp-aes-gcm.c:183:11-12: WARNING opportunity for kfree_sensitive/kvfree_sensitive (memset at line 182)
   drivers/crypto/xilinx/zynqmp-aes-gcm.c:185:13-14: WARNING opportunity for kfree_sensitive/kvfree_sensitive (memset at line 184)

vim +183 drivers/crypto/xilinx/zynqmp-aes-gcm.c

43f0478672c323 Harsh Jain    2025-12-20   85  
4d96f7d48131fe Kalyani Akula 2020-02-17   86  static int zynqmp_aes_aead_cipher(struct aead_request *req)
4d96f7d48131fe Kalyani Akula 2020-02-17   87  {
4d96f7d48131fe Kalyani Akula 2020-02-17   88  	struct crypto_aead *aead = crypto_aead_reqtfm(req);
56934489a80a74 Harsh Jain    2025-12-20   89  	struct xilinx_aead_tfm_ctx *tfm_ctx = crypto_aead_ctx(aead);
56934489a80a74 Harsh Jain    2025-12-20   90  	struct xilinx_aead_req_ctx *rq_ctx = aead_request_ctx(req);
c315cb0005bed2 Harsh Jain    2025-12-20   91  	dma_addr_t dma_addr_data, dma_addr_hw_req;
4d96f7d48131fe Kalyani Akula 2020-02-17   92  	struct device *dev = tfm_ctx->dev;
4d96f7d48131fe Kalyani Akula 2020-02-17   93  	struct zynqmp_aead_hw_req *hwreq;
4d96f7d48131fe Kalyani Akula 2020-02-17   94  	unsigned int data_size;
4d96f7d48131fe Kalyani Akula 2020-02-17   95  	unsigned int status;
1d9000262b3b80 Rajan Vaja    2020-05-01   96  	int ret;
4d96f7d48131fe Kalyani Akula 2020-02-17   97  	size_t dma_size;
c315cb0005bed2 Harsh Jain    2025-12-20   98  	void *dmabuf;
4d96f7d48131fe Kalyani Akula 2020-02-17   99  	char *kbuf;
4d96f7d48131fe Kalyani Akula 2020-02-17  100  
c315cb0005bed2 Harsh Jain    2025-12-20  101  	dma_size = req->cryptlen + XILINX_AES_AUTH_SIZE;
c315cb0005bed2 Harsh Jain    2025-12-20  102  	kbuf = kmalloc(dma_size, GFP_KERNEL);
4d96f7d48131fe Kalyani Akula 2020-02-17  103  	if (!kbuf)
4d96f7d48131fe Kalyani Akula 2020-02-17  104  		return -ENOMEM;
4d96f7d48131fe Kalyani Akula 2020-02-17  105  
c315cb0005bed2 Harsh Jain    2025-12-20  106  	dmabuf = kmalloc(sizeof(*hwreq) + GCM_AES_IV_SIZE, GFP_KERNEL);
c315cb0005bed2 Harsh Jain    2025-12-20  107  	if (!dmabuf) {
c315cb0005bed2 Harsh Jain    2025-12-20  108  		kfree(kbuf);
4d96f7d48131fe Kalyani Akula 2020-02-17  109  		return -ENOMEM;
4d96f7d48131fe Kalyani Akula 2020-02-17  110  	}
c315cb0005bed2 Harsh Jain    2025-12-20  111  	hwreq = dmabuf;
4d96f7d48131fe Kalyani Akula 2020-02-17  112  	data_size = req->cryptlen;
4d96f7d48131fe Kalyani Akula 2020-02-17  113  	scatterwalk_map_and_copy(kbuf, req->src, 0, req->cryptlen, 0);
c315cb0005bed2 Harsh Jain    2025-12-20  114  	memcpy(dmabuf + sizeof(struct zynqmp_aead_hw_req), req->iv, GCM_AES_IV_SIZE);
c315cb0005bed2 Harsh Jain    2025-12-20  115  	dma_addr_data = dma_map_single(dev, kbuf, dma_size, DMA_BIDIRECTIONAL);
c315cb0005bed2 Harsh Jain    2025-12-20  116  	if (unlikely(dma_mapping_error(dev, dma_addr_data))) {
c315cb0005bed2 Harsh Jain    2025-12-20  117  		ret = -ENOMEM;
c315cb0005bed2 Harsh Jain    2025-12-20  118  		goto freemem;
c315cb0005bed2 Harsh Jain    2025-12-20  119  	}
4d96f7d48131fe Kalyani Akula 2020-02-17  120  
4d96f7d48131fe Kalyani Akula 2020-02-17  121  	hwreq->src = dma_addr_data;
4d96f7d48131fe Kalyani Akula 2020-02-17  122  	hwreq->dst = dma_addr_data;
4d96f7d48131fe Kalyani Akula 2020-02-17  123  	hwreq->keysrc = tfm_ctx->keysrc;
4d96f7d48131fe Kalyani Akula 2020-02-17  124  	hwreq->op = rq_ctx->op;
4d96f7d48131fe Kalyani Akula 2020-02-17  125  
56934489a80a74 Harsh Jain    2025-12-20  126  	if (hwreq->op == XILINX_AES_ENCRYPT)
4d96f7d48131fe Kalyani Akula 2020-02-17  127  		hwreq->size = data_size;
4d96f7d48131fe Kalyani Akula 2020-02-17  128  	else
56934489a80a74 Harsh Jain    2025-12-20  129  		hwreq->size = data_size - XILINX_AES_AUTH_SIZE;
4d96f7d48131fe Kalyani Akula 2020-02-17  130  
c315cb0005bed2 Harsh Jain    2025-12-20  131  	if (hwreq->keysrc == ZYNQMP_AES_KUP_KEY)
c315cb0005bed2 Harsh Jain    2025-12-20  132  		hwreq->key = tfm_ctx->key_dma_addr;
c315cb0005bed2 Harsh Jain    2025-12-20  133  	else
4d96f7d48131fe Kalyani Akula 2020-02-17  134  		hwreq->key = 0;
4d96f7d48131fe Kalyani Akula 2020-02-17  135  
c315cb0005bed2 Harsh Jain    2025-12-20  136  	dma_addr_hw_req = dma_map_single(dev, dmabuf, sizeof(struct zynqmp_aead_hw_req) +
c315cb0005bed2 Harsh Jain    2025-12-20  137  					 GCM_AES_IV_SIZE,
c315cb0005bed2 Harsh Jain    2025-12-20  138  					 DMA_TO_DEVICE);
c315cb0005bed2 Harsh Jain    2025-12-20  139  	if (unlikely(dma_mapping_error(dev, dma_addr_hw_req))) {
c315cb0005bed2 Harsh Jain    2025-12-20  140  		ret = -ENOMEM;
c315cb0005bed2 Harsh Jain    2025-12-20  141  		dma_unmap_single(dev, dma_addr_data, dma_size, DMA_BIDIRECTIONAL);
c315cb0005bed2 Harsh Jain    2025-12-20  142  		goto freemem;
c315cb0005bed2 Harsh Jain    2025-12-20  143  	}
c315cb0005bed2 Harsh Jain    2025-12-20  144  	hwreq->iv = dma_addr_hw_req + sizeof(struct zynqmp_aead_hw_req);
c315cb0005bed2 Harsh Jain    2025-12-20  145  	dma_sync_single_for_device(dev, dma_addr_hw_req, sizeof(struct zynqmp_aead_hw_req) +
c315cb0005bed2 Harsh Jain    2025-12-20  146  				   GCM_AES_IV_SIZE, DMA_TO_DEVICE);
1d9000262b3b80 Rajan Vaja    2020-05-01  147  	ret = zynqmp_pm_aes_engine(dma_addr_hw_req, &status);
c315cb0005bed2 Harsh Jain    2025-12-20  148  	dma_unmap_single(dev, dma_addr_hw_req, sizeof(struct zynqmp_aead_hw_req) + GCM_AES_IV_SIZE,
c315cb0005bed2 Harsh Jain    2025-12-20  149  			 DMA_TO_DEVICE);
c315cb0005bed2 Harsh Jain    2025-12-20  150  	dma_unmap_single(dev, dma_addr_data, dma_size, DMA_BIDIRECTIONAL);
1d9000262b3b80 Rajan Vaja    2020-05-01  151  	if (ret) {
1d9000262b3b80 Rajan Vaja    2020-05-01  152  		dev_err(dev, "ERROR: AES PM API failed\n");
1d9000262b3b80 Rajan Vaja    2020-05-01  153  	} else if (status) {
4d96f7d48131fe Kalyani Akula 2020-02-17  154  		switch (status) {
4d96f7d48131fe Kalyani Akula 2020-02-17  155  		case ZYNQMP_AES_GCM_TAG_MISMATCH_ERR:
349f0d326d7c92 Harsh Jain    2025-12-20  156  			ret = -EBADMSG;
4d96f7d48131fe Kalyani Akula 2020-02-17  157  			break;
4d96f7d48131fe Kalyani Akula 2020-02-17  158  		case ZYNQMP_AES_WRONG_KEY_SRC_ERR:
349f0d326d7c92 Harsh Jain    2025-12-20  159  			ret = -EINVAL;
4d96f7d48131fe Kalyani Akula 2020-02-17  160  			dev_err(dev, "ERROR: Wrong KeySrc, enable secure mode\n");
4d96f7d48131fe Kalyani Akula 2020-02-17  161  			break;
4d96f7d48131fe Kalyani Akula 2020-02-17  162  		case ZYNQMP_AES_PUF_NOT_PROGRAMMED:
349f0d326d7c92 Harsh Jain    2025-12-20  163  			ret = -EINVAL;
4d96f7d48131fe Kalyani Akula 2020-02-17  164  			dev_err(dev, "ERROR: PUF is not registered\n");
4d96f7d48131fe Kalyani Akula 2020-02-17  165  			break;
4d96f7d48131fe Kalyani Akula 2020-02-17  166  		default:
349f0d326d7c92 Harsh Jain    2025-12-20  167  			ret = -EINVAL;
4d96f7d48131fe Kalyani Akula 2020-02-17  168  			break;
4d96f7d48131fe Kalyani Akula 2020-02-17  169  		}
4d96f7d48131fe Kalyani Akula 2020-02-17  170  	} else {
56934489a80a74 Harsh Jain    2025-12-20  171  		if (hwreq->op == XILINX_AES_ENCRYPT)
f939b88c7ca56c Harsh Jain    2025-12-20  172  			data_size = data_size + crypto_aead_authsize(aead);
4d96f7d48131fe Kalyani Akula 2020-02-17  173  		else
56934489a80a74 Harsh Jain    2025-12-20  174  			data_size = data_size - XILINX_AES_AUTH_SIZE;
4d96f7d48131fe Kalyani Akula 2020-02-17  175  
4d96f7d48131fe Kalyani Akula 2020-02-17  176  		sg_copy_from_buffer(req->dst, sg_nents(req->dst),
4d96f7d48131fe Kalyani Akula 2020-02-17  177  				    kbuf, data_size);
349f0d326d7c92 Harsh Jain    2025-12-20  178  		ret = 0;
4d96f7d48131fe Kalyani Akula 2020-02-17  179  	}
4d96f7d48131fe Kalyani Akula 2020-02-17  180  
c315cb0005bed2 Harsh Jain    2025-12-20  181  freemem:
4d96f7d48131fe Kalyani Akula 2020-02-17 @182  	memzero_explicit(kbuf, dma_size);
c315cb0005bed2 Harsh Jain    2025-12-20 @183  	kfree(kbuf);
c315cb0005bed2 Harsh Jain    2025-12-20  184  	memzero_explicit(dmabuf, sizeof(struct zynqmp_aead_hw_req) + GCM_AES_IV_SIZE);
c315cb0005bed2 Harsh Jain    2025-12-20  185  	kfree(dmabuf);
349f0d326d7c92 Harsh Jain    2025-12-20  186  
349f0d326d7c92 Harsh Jain    2025-12-20  187  	return ret;
4d96f7d48131fe Kalyani Akula 2020-02-17  188  }
4d96f7d48131fe Kalyani Akula 2020-02-17  189  

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.