* drivers/nvme/target/pr.c:831:8-15: WARNING: kzalloc should be used for data, instead of kmalloc/memset
@ 2024-11-30 6:31 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2024-11-30 6:31 UTC (permalink / raw)
To: Guixin Liu
Cc: oe-kbuild-all, linux-kernel, Keith Busch, Dmitry Bogdanov,
Christoph Hellwig, Chaitanya Kulkarni
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@intel.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, ®->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
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2024-11-30 6:31 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-11-30 6:31 drivers/nvme/target/pr.c:831:8-15: WARNING: kzalloc should be used for data, instead of kmalloc/memset kernel test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.