From 88ab1b389cb286063a9ef0b390c01f477cfd423e Mon Sep 17 00:00:00 2001 From: Vedashree Vidwans Date: Mon, 5 Aug 2019 10:17:31 -0700 Subject: [PATCH] gpu: nvgpu: fix MISRA errors in nvgpu.common.mm Rule 11.3 forbids pointer cast between two different object types. Rule 13.5 doesn't allow right hand operand of a logical operator to have persistent side effects. This patch fixes mentioned rules in nvgpu.common.mm. Jira NVGPU-3864 Change-Id: I08b7fb4d3fb623f14f8760a50648b39b3e53b233 Signed-off-by: Vedashree Vidwans Reviewed-on: https://git-master.nvidia.com/r/2168522 Reviewed-by: mobile promotions Tested-by: mobile promotions --- drivers/gpu/nvgpu/common/mm/vm_area.c | 26 ++++++++++++------- .../gpu/nvgpu/include/nvgpu/posix/atomic.h | 2 +- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/drivers/gpu/nvgpu/common/mm/vm_area.c b/drivers/gpu/nvgpu/common/mm/vm_area.c index 0621f6d37..d4e562064 100644 --- a/drivers/gpu/nvgpu/common/mm/vm_area.c +++ b/drivers/gpu/nvgpu/common/mm/vm_area.c @@ -32,9 +32,11 @@ struct nvgpu_vm_area *nvgpu_vm_area_find(struct vm_gk20a *vm, u64 addr) nvgpu_list_for_each_entry(vm_area, &vm->vm_area_list, nvgpu_vm_area, vm_area_list) { - if (addr >= vm_area->addr && - addr < nvgpu_safe_add_u64(vm_area->addr, vm_area->size)) { - return vm_area; + if (addr >= vm_area->addr) { + if (addr < nvgpu_safe_add_u64(vm_area->addr, + vm_area->size)) { + return vm_area; + } } } @@ -73,10 +75,13 @@ int nvgpu_vm_area_validate_buffer(struct vm_gk20a *vm, } /* Mapped area should fit inside va, if there's one */ - if (vm_area != NULL && map_end > nvgpu_safe_add_u64(vm_area->addr, + if (vm_area != NULL) { + if (map_end > nvgpu_safe_add_u64(vm_area->addr, vm_area->size)) { - nvgpu_warn(g, "fixed offset mapping size overflows va node"); - return -EINVAL; + nvgpu_warn(g, + "fixed offset mapping size overflows va node"); + return -EINVAL; + } } /* check that this mapping does not collide with existing @@ -84,10 +89,11 @@ int nvgpu_vm_area_validate_buffer(struct vm_gk20a *vm, * that is less than our buffer end */ buffer = nvgpu_vm_find_mapped_buf_less_than( vm, nvgpu_safe_add_u64(map_addr, map_size)); - if (buffer != NULL && - nvgpu_safe_add_u64(buffer->addr, buffer->size) > map_addr) { - nvgpu_warn(g, "overlapping buffer map requested"); - return -EINVAL; + if (buffer != NULL) { + if (nvgpu_safe_add_u64(buffer->addr, buffer->size) > map_addr) { + nvgpu_warn(g, "overlapping buffer map requested"); + return -EINVAL; + } } *pvm_area = vm_area; diff --git a/drivers/gpu/nvgpu/include/nvgpu/posix/atomic.h b/drivers/gpu/nvgpu/include/nvgpu/posix/atomic.h index afa0538ff..38308fbd4 100644 --- a/drivers/gpu/nvgpu/include/nvgpu/posix/atomic.h +++ b/drivers/gpu/nvgpu/include/nvgpu/posix/atomic.h @@ -276,7 +276,7 @@ static inline bool nvgpu_atomic64_sub_and_test_impl(long x, nvgpu_atomic64_t *v) ({ \ typeof(*(p)) tmp = (old); \ \ - (void) nvgpu_atomic_cmpxchg((nvgpu_atomic_t *) (p), tmp,\ + (void) nvgpu_atomic_cmpxchg((nvgpu_atomic_t *)(void *)(p), tmp,\ (new)); \ tmp; \ })