gpu: nvgpu: fix MISRA 21.6 violation in nvgpu.common.mm.as

Below MISRA 21.6 violation is reported in nvgpu.common.mm.as

${TEGRA_TOP}/kernel/nvgpu/drivers/gpu/nvgpu/common/mm/as.c:79:
misra_violation: Using function "snprintf".

Fix this by replacing snprintf with strncpy.
Add nvgpu_strnadd_u32 function to convert u32 to string
The function supports radix from 2 to 16.

Jira NVGPU-3333

Change-Id: Idee739dfdedeabb74d0d9f7d4cddd798445f0ee1
Signed-off-by: Thomas Fleury <tfleury@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/2117019
GVS: Gerrit_Virtual_Submit
Reviewed-by: Philip Elcan <pelcan@nvidia.com>
Reviewed-by: Vaibhav Kachore <vkachore@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
This commit is contained in:
Thomas Fleury
2019-05-10 16:21:00 -07:00
committed by mobile promotions
parent 9b2f6925ca
commit 1fd2e43a3f
3 changed files with 58 additions and 2 deletions

View File

@@ -28,6 +28,7 @@
#include <nvgpu/vm.h>
#include <nvgpu/log2.h>
#include <nvgpu/gk20a.h>
#include <nvgpu/string.h>
/* dumb allocator... */
static int generate_as_share_id(struct gk20a_as *as)
@@ -55,6 +56,7 @@ static int gk20a_vm_alloc_share(struct gk20a_as_share *as_share,
struct mm_gk20a *mm = &g->mm;
struct vm_gk20a *vm;
char name[32];
char *p;
const bool userspace_managed =
(flags & NVGPU_AS_ALLOC_USERSPACE_MANAGED) != 0U;
const bool unified_va =
@@ -76,7 +78,8 @@ static int gk20a_vm_alloc_share(struct gk20a_as_share *as_share,
}
}
(void) snprintf(name, sizeof(name), "as_%d", as_share->id);
p = strncpy(name, "as_", sizeof(name) - 1);
(void) nvgpu_strnadd_u32(p, as_share->id, sizeof(name) - (p-name), 10U);
vm = nvgpu_vm_init(g, big_page_size,
U64(big_page_size) << U64(10),