From d32692ae2427693daf85b3c7b4e24cd36471dec6 Mon Sep 17 00:00:00 2001 From: Scott Long Date: Mon, 2 Jul 2018 17:57:21 -0700 Subject: gpu: nvgpu: fix MISRA Rule 11.6 issue with _THIS_IP_ The use of the _THIS_IP_ macro in nvgpu introduces two separate MISRA Rule 11.6 violations. The first is when when the label address (which gcc generates as a void *) is cast to an unsigned long and the second is when that unsigned long is cast back to a void * in the timer and kmem code that track the value. Skipping the intermediate use of unsigned long eliminates these violations. To do this, references to _THIS_IP_ are replaced with a new (compliant) _NVGPU_GET_IP_ macro. JIRA NVGPU-895 : MISRA Rule 11.6 violations Change-Id: I5ea999d8e2b467257fa190b485fa971adcbd0a2b Signed-off-by: Scott Long Reviewed-on: https://git-master.nvidia.com/r/1774531 Reviewed-by: svc-misra-checker GVS: Gerrit_Virtual_Submit Reviewed-by: Adeel Raza Reviewed-by: mobile promotions Tested-by: mobile promotions --- drivers/gpu/nvgpu/common/posix/kmem.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'drivers/gpu/nvgpu/common/posix/kmem.c') diff --git a/drivers/gpu/nvgpu/common/posix/kmem.c b/drivers/gpu/nvgpu/common/posix/kmem.c index 3c0b9b66..5fe0aeb2 100644 --- a/drivers/gpu/nvgpu/common/posix/kmem.c +++ b/drivers/gpu/nvgpu/common/posix/kmem.c @@ -64,17 +64,17 @@ void nvgpu_kmem_cache_free(struct nvgpu_kmem_cache *cache, void *ptr) free(ptr); } -void *__nvgpu_kmalloc(struct gk20a *g, size_t size, unsigned long ip) +void *__nvgpu_kmalloc(struct gk20a *g, size_t size, void *ip) { return malloc(size); } -void *__nvgpu_kzalloc(struct gk20a *g, size_t size, unsigned long ip) +void *__nvgpu_kzalloc(struct gk20a *g, size_t size, void *ip) { return calloc(1, size); } -void *__nvgpu_kcalloc(struct gk20a *g, size_t n, size_t size, unsigned long ip) +void *__nvgpu_kcalloc(struct gk20a *g, size_t n, size_t size, void *ip) { /* * calloc() implicitly zeros mem. So calloc a single member size bytes @@ -91,12 +91,12 @@ void __nvgpu_kfree(struct gk20a *g, void *addr) /* * The concept of vmalloc() does not exist in userspace. */ -void *__nvgpu_vmalloc(struct gk20a *g, unsigned long size, unsigned long ip) +void *__nvgpu_vmalloc(struct gk20a *g, unsigned long size, void *ip) { return __nvgpu_kmalloc(g, size, ip); } -void *__nvgpu_vzalloc(struct gk20a *g, unsigned long size, unsigned long ip) +void *__nvgpu_vzalloc(struct gk20a *g, unsigned long size, void *ip) { return __nvgpu_kzalloc(g, size, ip); } @@ -113,8 +113,8 @@ void *__nvgpu_big_alloc(struct gk20a *g, size_t size, bool clear) * reuse k[zm]alloc() for this. */ return clear ? - __nvgpu_kzalloc(g, size, _THIS_IP_) : - __nvgpu_kmalloc(g, size, _THIS_IP_); + __nvgpu_kzalloc(g, size, _NVGPU_GET_IP_) : + __nvgpu_kmalloc(g, size, _NVGPU_GET_IP_); } void nvgpu_big_free(struct gk20a *g, void *p) -- cgit v1.2.2