Commit b07a0411 authored by Alexey Marchuk's avatar Alexey Marchuk Committed by Tomasz Zawadzki
Browse files

ut/rdma: Fix GCC 10.2.0 warning



rdma_ut.c: In function ‘test_spdk_nvmf_rdma_request_parse_sgl_with_md’:
rdma_ut.c:1152:54: warning: array subscript 10 is outside array bounds of ‘struct spdk_nvmf_rdma_request_data[1]’ [-Warray-bounds]
 1152 |  aligned_buffer = (void *)((uintptr_t)((char *)&data + NVMF_DATA_BUFFER_MASK) &
      |                                       ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
rdma_ut.c:834:37: note: while referencing ‘data’
  834 |  struct spdk_nvmf_rdma_request_data data;
      |                                     ^~~~

The fix is to use array instead of spdk_nvmf_rdma_request_data
structure

Change-Id: I81bd311d26037dcb9340d85abcb4ea45b20a5171
Reported-by: default avatarG.Balaji <gbalajieie@gmail.com>
Signed-off-by: default avatarAlexey Marchuk <alexeymar@mellanox.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/7365


Community-CI: Broadcom CI
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatar <dongx.yi@intel.com>
Reviewed-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
parent 278bcad4
Loading
Loading
Loading
Loading
+12 −11
Original line number Diff line number Diff line
@@ -831,7 +831,8 @@ test_spdk_nvmf_rdma_request_parse_sgl_with_md(void)
	union nvmf_h2c_msg cmd;
	struct spdk_nvme_sgl_descriptor *sgl;
	struct spdk_nvme_sgl_descriptor sgl_desc[SPDK_NVMF_MAX_SGL_ENTRIES] = {{0}};
	struct spdk_nvmf_rdma_request_data data;
	char data_buffer[8192];
	struct spdk_nvmf_rdma_request_data *data = (struct spdk_nvmf_rdma_request_data *)data_buffer;
	char data2_buffer[8192];
	struct spdk_nvmf_rdma_request_data *data2 = (struct spdk_nvmf_rdma_request_data *)data2_buffer;
	const uint32_t data_bs = 512;
@@ -839,7 +840,7 @@ test_spdk_nvmf_rdma_request_parse_sgl_with_md(void)
	int rc, i;
	void *aligned_buffer;

	data.wr.sg_list = data.sgl;
	data->wr.sg_list = data->sgl;
	STAILQ_INIT(&group.group.buf_cache);
	group.group.buf_cache_size = 0;
	group.group.buf_cache_count = 0;
@@ -1148,8 +1149,8 @@ test_spdk_nvmf_rdma_request_parse_sgl_with_md(void)
	sgl->unkeyed.subtype = SPDK_NVME_SGL_SUBTYPE_OFFSET;
	sgl->address = 0;
	rdma_req.recv->buf = (void *)&sgl_desc;
	MOCK_SET(spdk_mempool_get, &data);
	aligned_buffer = (void *)((uintptr_t)((char *)&data + NVMF_DATA_BUFFER_MASK) &
	MOCK_SET(spdk_mempool_get, data_buffer);
	aligned_buffer = (void *)((uintptr_t)(data_buffer + NVMF_DATA_BUFFER_MASK) &
				  ~NVMF_DATA_BUFFER_MASK);

	/* part 1: 2 segments each with 1 wr. io_unit_size is aligned with data_bs + md_size */
@@ -1185,17 +1186,17 @@ test_spdk_nvmf_rdma_request_parse_sgl_with_md(void)

	CU_ASSERT(rdma_req.data.wr.wr.rdma.rkey == 0x44);
	CU_ASSERT(rdma_req.data.wr.wr.rdma.remote_addr == 0x4000);
	CU_ASSERT(rdma_req.data.wr.next == &data.wr);
	CU_ASSERT(data.wr.wr.rdma.rkey == 0x44);
	CU_ASSERT(data.wr.wr.rdma.remote_addr == 0x4000 + data_bs * 4);
	CU_ASSERT(data.wr.num_sge == 4);
	CU_ASSERT(rdma_req.data.wr.next == &data->wr);
	CU_ASSERT(data->wr.wr.rdma.rkey == 0x44);
	CU_ASSERT(data->wr.wr.rdma.remote_addr == 0x4000 + data_bs * 4);
	CU_ASSERT(data->wr.num_sge == 4);
	for (i = 0; i < 4; ++i) {
		CU_ASSERT(data.wr.sg_list[i].addr == (uintptr_t)((unsigned char *)aligned_buffer) + i *
		CU_ASSERT(data->wr.sg_list[i].addr == (uintptr_t)((unsigned char *)aligned_buffer) + i *
			  (data_bs + md_size));
		CU_ASSERT(data.wr.sg_list[i].length == data_bs);
		CU_ASSERT(data->wr.sg_list[i].length == data_bs);
	}

	CU_ASSERT(data.wr.next == &rdma_req.rsp.wr);
	CU_ASSERT(data->wr.next == &rdma_req.rsp.wr);
}

int main(int argc, char **argv)