diff options
author | Scott Long <scottl@nvidia.com> | 2018-07-02 20:57:21 -0400 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2018-07-30 22:55:16 -0400 |
commit | d32692ae2427693daf85b3c7b4e24cd36471dec6 (patch) | |
tree | b1bb9c697c636847e12afd956b666241176cc1d4 /drivers/gpu/nvgpu/common/posix | |
parent | d9956443820d64ac7f6e2fe7a9d10c1ac4956938 (diff) |
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 <scottl@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/1774531
Reviewed-by: svc-misra-checker <svc-misra-checker@nvidia.com>
GVS: Gerrit_Virtual_Submit
Reviewed-by: Adeel Raza <araza@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/common/posix')
-rw-r--r-- | drivers/gpu/nvgpu/common/posix/kmem.c | 14 |
1 files changed, 7 insertions, 7 deletions
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) | |||
64 | free(ptr); | 64 | free(ptr); |
65 | } | 65 | } |
66 | 66 | ||
67 | void *__nvgpu_kmalloc(struct gk20a *g, size_t size, unsigned long ip) | 67 | void *__nvgpu_kmalloc(struct gk20a *g, size_t size, void *ip) |
68 | { | 68 | { |
69 | return malloc(size); | 69 | return malloc(size); |
70 | } | 70 | } |
71 | 71 | ||
72 | void *__nvgpu_kzalloc(struct gk20a *g, size_t size, unsigned long ip) | 72 | void *__nvgpu_kzalloc(struct gk20a *g, size_t size, void *ip) |
73 | { | 73 | { |
74 | return calloc(1, size); | 74 | return calloc(1, size); |
75 | } | 75 | } |
76 | 76 | ||
77 | void *__nvgpu_kcalloc(struct gk20a *g, size_t n, size_t size, unsigned long ip) | 77 | void *__nvgpu_kcalloc(struct gk20a *g, size_t n, size_t size, void *ip) |
78 | { | 78 | { |
79 | /* | 79 | /* |
80 | * calloc() implicitly zeros mem. So calloc a single member size bytes | 80 | * calloc() implicitly zeros mem. So calloc a single member size bytes |
@@ -91,12 +91,12 @@ void __nvgpu_kfree(struct gk20a *g, void *addr) | |||
91 | /* | 91 | /* |
92 | * The concept of vmalloc() does not exist in userspace. | 92 | * The concept of vmalloc() does not exist in userspace. |
93 | */ | 93 | */ |
94 | void *__nvgpu_vmalloc(struct gk20a *g, unsigned long size, unsigned long ip) | 94 | void *__nvgpu_vmalloc(struct gk20a *g, unsigned long size, void *ip) |
95 | { | 95 | { |
96 | return __nvgpu_kmalloc(g, size, ip); | 96 | return __nvgpu_kmalloc(g, size, ip); |
97 | } | 97 | } |
98 | 98 | ||
99 | void *__nvgpu_vzalloc(struct gk20a *g, unsigned long size, unsigned long ip) | 99 | void *__nvgpu_vzalloc(struct gk20a *g, unsigned long size, void *ip) |
100 | { | 100 | { |
101 | return __nvgpu_kzalloc(g, size, ip); | 101 | return __nvgpu_kzalloc(g, size, ip); |
102 | } | 102 | } |
@@ -113,8 +113,8 @@ void *__nvgpu_big_alloc(struct gk20a *g, size_t size, bool clear) | |||
113 | * reuse k[zm]alloc() for this. | 113 | * reuse k[zm]alloc() for this. |
114 | */ | 114 | */ |
115 | return clear ? | 115 | return clear ? |
116 | __nvgpu_kzalloc(g, size, _THIS_IP_) : | 116 | __nvgpu_kzalloc(g, size, _NVGPU_GET_IP_) : |
117 | __nvgpu_kmalloc(g, size, _THIS_IP_); | 117 | __nvgpu_kmalloc(g, size, _NVGPU_GET_IP_); |
118 | } | 118 | } |
119 | 119 | ||
120 | void nvgpu_big_free(struct gk20a *g, void *p) | 120 | void nvgpu_big_free(struct gk20a *g, void *p) |