lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Message-ID: <202411301434.LEckbcWx-lkp@intel.com>
Date: Sat, 30 Nov 2024 14:31:29 +0800
From: kernel test robot <lkp@...el.com>
To: Guixin Liu <kanie@...ux.alibaba.com>
Cc: oe-kbuild-all@...ts.linux.dev, linux-kernel@...r.kernel.org,
	Keith Busch <kbusch@...nel.org>,
	Dmitry Bogdanov <d.bogdanov@...ro.com>,
	Christoph Hellwig <hch@....de>, Chaitanya Kulkarni <kch@...dia.com>
Subject: drivers/nvme/target/pr.c:831:8-15: WARNING: kzalloc should be used
 for data, instead of kmalloc/memset

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   2ba9f676d0a2e408aef14d679984c26373bf37b7
commit: 5a47c2080a7316f184107464e4f76737c0c05186 nvmet: support reservation feature
date:   3 weeks ago
config: hexagon-randconfig-r051-20241130 (https://download.01.org/0day-ci/archive/20241130/202411301434.LEckbcWx-lkp@intel.com/config)
compiler: clang version 20.0.0git (https://github.com/llvm/llvm-project 592c0fe55f6d9a811028b5f3507be91458ab2713)

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
| Reported-by: kernel test robot <lkp@...el.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202411301434.LEckbcWx-lkp@intel.com/

cocci warnings: (new ones prefixed by >>)
>> drivers/nvme/target/pr.c:831:8-15: WARNING: kzalloc should be used for data, instead of kmalloc/memset

vim +831 drivers/nvme/target/pr.c

   802	
   803	static void nvmet_execute_pr_report(struct nvmet_req *req)
   804	{
   805		u32 cdw11 = le32_to_cpu(req->cmd->common.cdw11);
   806		u32 cdw10 = le32_to_cpu(req->cmd->common.cdw10);
   807		u32 num_bytes = 4 * (cdw10 + 1); /* cdw10 is number of dwords */
   808		u8 eds = cdw11 & 1; /* Extended data structure, bit 00 */
   809		struct nvme_registered_ctrl_ext *ctrl_eds;
   810		struct nvme_reservation_status_ext *data;
   811		struct nvmet_pr *pr = &req->ns->pr;
   812		struct nvmet_pr_registrant *holder;
   813		struct nvmet_pr_registrant *reg;
   814		u16 num_ctrls = 0;
   815		u16 status;
   816		u8 rtype;
   817	
   818		/* nvmet hostid(uuid_t) is 128 bit. */
   819		if (!eds) {
   820			req->error_loc = offsetof(struct nvme_common_command, cdw11);
   821			status = NVME_SC_HOST_ID_INCONSIST | NVME_STATUS_DNR;
   822			goto out;
   823		}
   824	
   825		if (num_bytes < sizeof(struct nvme_reservation_status_ext)) {
   826			req->error_loc = offsetof(struct nvme_common_command, cdw10);
   827			status = NVME_SC_INVALID_FIELD | NVME_STATUS_DNR;
   828			goto out;
   829		}
   830	
 > 831		data = kmalloc(num_bytes, GFP_KERNEL);
   832		if (!data) {
   833			status = NVME_SC_INTERNAL;
   834			goto out;
   835		}
   836		memset(data, 0, num_bytes);
   837		data->gen = cpu_to_le32(atomic_read(&pr->generation));
   838		data->ptpls = 0;
   839		ctrl_eds = data->regctl_eds;
   840	
   841		rcu_read_lock();
   842		holder = rcu_dereference(pr->holder);
   843		rtype = holder ? holder->rtype : 0;
   844		data->rtype = rtype;
   845	
   846		list_for_each_entry_rcu(reg, &pr->registrant_list, entry) {
   847			num_ctrls++;
   848			/*
   849			 * continue to get the number of all registrans.
   850			 */
   851			if (((void *)ctrl_eds + sizeof(*ctrl_eds)) >
   852			    ((void *)data + num_bytes))
   853				continue;
   854			/*
   855			 * Dynamic controller, set cntlid to 0xffff.
   856			 */
   857			ctrl_eds->cntlid = cpu_to_le16(NVME_CNTLID_DYNAMIC);
   858			if (rtype == NVME_PR_WRITE_EXCLUSIVE_ALL_REGS ||
   859			    rtype == NVME_PR_EXCLUSIVE_ACCESS_ALL_REGS)
   860				ctrl_eds->rcsts = 1;
   861			if (reg == holder)
   862				ctrl_eds->rcsts = 1;
   863			uuid_copy((uuid_t *)&ctrl_eds->hostid, &reg->hostid);
   864			ctrl_eds->rkey = cpu_to_le64(reg->rkey);
   865			ctrl_eds++;
   866		}
   867		rcu_read_unlock();
   868	
   869		put_unaligned_le16(num_ctrls, data->regctl);
   870		status = nvmet_copy_to_sgl(req, 0, data, num_bytes);
   871		kfree(data);
   872	out:
   873		nvmet_req_complete(req, status);
   874	}
   875	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ