From: kernel test robot <lkp@intel.com>
To: Guixin Liu <kanie@linux.alibaba.com>
Cc: oe-kbuild-all@lists.linux.dev, linux-kernel@vger.kernel.org,
Keith Busch <kbusch@kernel.org>,
Dmitry Bogdanov <d.bogdanov@yadro.com>,
Christoph Hellwig <hch@lst.de>,
Chaitanya Kulkarni <kch@nvidia.com>
Subject: drivers/nvme/target/pr.c:831:8-15: WARNING: kzalloc should be used for data, instead of kmalloc/memset
Date: Sat, 30 Nov 2024 14:31:29 +0800 [thread overview]
Message-ID: <202411301434.LEckbcWx-lkp@intel.com> (raw)
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
reply other threads:[~2024-11-30 6:31 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202411301434.LEckbcWx-lkp@intel.com \
--to=lkp@intel.com \
--cc=d.bogdanov@yadro.com \
--cc=hch@lst.de \
--cc=kanie@linux.alibaba.com \
--cc=kbusch@kernel.org \
--cc=kch@nvidia.com \
--cc=linux-kernel@vger.kernel.org \
--cc=oe-kbuild-all@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox