gpu: nvgpu: fix CERTC violations in kmem unit

INT30-C Requires that unsigned integer operations do not wrap.
INT31-C Requires that integer conversions do not result in lost or
misinterpreted data.
ERR33-C Requires to detect and handle standard library errors.
Fix the above CERT C violations in kmem unit.

Jira NVGPU-3603

Change-Id: I104551406e3cf6d2da22c5b6c6edc6694992ce62
Signed-off-by: ajesh <akv@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/2139529
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: svc-mobile-coverity <svc-mobile-coverity@nvidia.com>
Reviewed-by: svc-mobile-misra <svc-mobile-misra@nvidia.com>
GVS: Gerrit_Virtual_Submit
Reviewed-by: Nitin Kumbhar <nkumbhar@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
This commit is contained in:
ajesh
2019-06-19 22:10:32 +05:30
committed by mobile promotions
parent d2444e85ed
commit 70d8a4555a

View File

@@ -72,7 +72,7 @@ struct nvgpu_kmem_cache *nvgpu_kmem_cache_create(struct gk20a *g, size_t size)
cache->size = size;
(void)snprintf(cache->name, sizeof(cache->name),
"nvgpu-cache-0x%p-%d-%d", g, (int)size,
"nvgpu-cache-0x%p-%lu-%d", g, size,
nvgpu_atomic_inc_return(&kmem_cache_id));
return cache;
@@ -85,12 +85,21 @@ void nvgpu_kmem_cache_destroy(struct nvgpu_kmem_cache *cache)
void *nvgpu_kmem_cache_alloc(struct nvgpu_kmem_cache *cache)
{
void *ptr;
#ifdef NVGPU_UNITTEST_FAULT_INJECTION_ENABLEMENT
if (nvgpu_posix_fault_injection_handle_call(&kmem_fi)) {
return NULL;
}
#endif
return malloc(cache->size);
ptr = malloc(cache->size);
if (ptr == NULL) {
nvgpu_warn(NULL, "malloc returns NULL");
return NULL;
}
return ptr;
}
void nvgpu_kmem_cache_free(struct nvgpu_kmem_cache *cache, void *ptr)
@@ -100,6 +109,8 @@ void nvgpu_kmem_cache_free(struct nvgpu_kmem_cache *cache, void *ptr)
void *nvgpu_kmalloc_impl(struct gk20a *g, size_t size, void *ip)
{
void *ptr;
#ifdef NVGPU_UNITTEST_FAULT_INJECTION_ENABLEMENT
if (nvgpu_posix_fault_injection_handle_call(&kmem_fi)) {
return NULL;
@@ -112,27 +123,52 @@ void *nvgpu_kmalloc_impl(struct gk20a *g, size_t size, void *ip)
* nvmap_page_alloc in qnx (i.e. using shm_open/shm_ctl_special/mmap
* calls).
*/
return malloc(size);
ptr = malloc(size);
if (ptr == NULL) {
nvgpu_warn(NULL, "malloc returns NULL");
return NULL;
}
return ptr;
}
void *nvgpu_kzalloc_impl(struct gk20a *g, size_t size, void *ip)
{
void *ptr;
#ifdef NVGPU_UNITTEST_FAULT_INJECTION_ENABLEMENT
if (nvgpu_posix_fault_injection_handle_call(&kmem_fi)) {
return NULL;
}
#endif
return calloc(1, size);
ptr = calloc(1, size);
if (ptr == NULL) {
nvgpu_warn(NULL, "calloc returns NULL");
return NULL;
}
return ptr;
}
void *nvgpu_kcalloc_impl(struct gk20a *g, size_t n, size_t size, void *ip)
{
void *ptr;
#ifdef NVGPU_UNITTEST_FAULT_INJECTION_ENABLEMENT
if (nvgpu_posix_fault_injection_handle_call(&kmem_fi)) {
return NULL;
}
#endif
return calloc(1, n * size);
ptr = calloc(1, (nvgpu_safe_mult_u64(n, size)));
if (ptr == NULL) {
nvgpu_warn(NULL, "calloc returns NULL");
return NULL;
}
return ptr;
}
void *nvgpu_vmalloc_impl(struct gk20a *g, unsigned long size, void *ip)