From 482d7e7ca25b7c1081e5877991c198b5edf0307a Mon Sep 17 00:00:00 2001 From: Scott Long Date: Thu, 1 Nov 2018 12:32:41 -0700 Subject: [PATCH] gpu: nvgpu: MISRA 21.15 fixes to vbios/acr code MISRA Rule 21.15 prohibits use of memcpy() with incompatible ptrs to qualified/unqualified types. To circumvent this issue we've introduced a new MISRA-compliant nvgpu_memcpy() function. This change switches all remaining offending uses of memcpy() in acr/* and vbios/* over to use nvgpu_memcpy() with appropriate casts applied. JIRA NVGPU-849 Change-Id: I30ec9481c1418289a8664bdb4ef5be7833218179 Signed-off-by: Scott Long Reviewed-on: https://git-master.nvidia.com/r/1941260 Reviewed-by: Philip Elcan Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: svc-misra-checker GVS: Gerrit_Virtual_Submit Reviewed-by: Alex Waterman Reviewed-by: mobile promotions Tested-by: mobile promotions --- drivers/gpu/nvgpu/common/vbios/bios.c | 6 +++--- drivers/gpu/nvgpu/gp106/acr_gp106.c | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/nvgpu/common/vbios/bios.c b/drivers/gpu/nvgpu/common/vbios/bios.c index 9620e2fc6..b1fbb43c7 100644 --- a/drivers/gpu/nvgpu/common/vbios/bios.c +++ b/drivers/gpu/nvgpu/common/vbios/bios.c @@ -400,7 +400,7 @@ u32 nvgpu_bios_get_nvlink_config_data(struct gk20a *g) return -EINVAL; } - (void) memcpy(&config, + nvgpu_memcpy((u8 *)&config, &g->bios.data[g->bios.nvlink_config_data_offset], sizeof(config)); @@ -732,7 +732,7 @@ static void nvgpu_bios_parse_bit(struct gk20a *g, int offset) int i; nvgpu_log_fn(g, " "); - (void) memcpy(&bit, &g->bios.data[offset], sizeof(bit)); + nvgpu_memcpy((u8 *)&bit, &g->bios.data[offset], sizeof(bit)); nvgpu_log_info(g, "BIT header: %04x %08x", bit.id, bit.signature); nvgpu_log_info(g, "tokens: %d entries * %d bytes", @@ -740,7 +740,7 @@ static void nvgpu_bios_parse_bit(struct gk20a *g, int offset) offset += bit.header_size; for (i = 0; i < bit.token_entries; i++) { - (void) memcpy(&bit_token, &g->bios.data[offset], + nvgpu_memcpy((u8 *)&bit_token, &g->bios.data[offset], sizeof(bit_token)); nvgpu_log_info(g, "BIT token id %d ptr %d size %d ver %d", diff --git a/drivers/gpu/nvgpu/gp106/acr_gp106.c b/drivers/gpu/nvgpu/gp106/acr_gp106.c index 93b10e1c5..39492fa2f 100644 --- a/drivers/gpu/nvgpu/gp106/acr_gp106.c +++ b/drivers/gpu/nvgpu/gp106/acr_gp106.c @@ -338,7 +338,7 @@ int gpccs_ucode_details(struct gk20a *g, struct flcn_ucode_img_v1 *p_img) err = -ENOMEM; goto rel_sig; } - (void) memcpy(lsf_desc, (void *)gpccs_sig->data, + nvgpu_memcpy((u8 *)lsf_desc, gpccs_sig->data, min_t(size_t, sizeof(*lsf_desc), gpccs_sig->size)); lsf_desc->falcon_id = LSF_FALCON_ID_GPCCS;