From 466bb285c6985027c75a230e39f2ae246fd07971 Mon Sep 17 00:00:00 2001 From: Zelalem Date: Wed, 5 Feb 2020 14:12:39 -0600 Subject: coverity: Fix MISRA null pointer violations Fix code that violates the MISRA rule: MISRA C-2012 Rule 11.9: Literal "0" shall not be used as null pointer constant. The fix explicitly checks whether a pointer is NULL. Change-Id: Ibc318dc0f464982be9a34783f24ccd1d44800551 Signed-off-by: Zelalem --- lib/utils/mem_region.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'lib/utils/mem_region.c') diff --git a/lib/utils/mem_region.c b/lib/utils/mem_region.c index 08bccf64b..6bd78ba82 100644 --- a/lib/utils/mem_region.c +++ b/lib/utils/mem_region.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2017-2020, ARM Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -32,7 +32,7 @@ void clear_mem_regions(mem_region_t *tbl, size_t nregions) { size_t i; - assert(tbl); + assert(tbl != NULL); assert(nregions > 0); for (i = 0; i < nregions; i++) { @@ -114,7 +114,7 @@ int mem_region_in_array_chk(mem_region_t *tbl, size_t nregions, uintptr_t region_start, region_end, start, end; size_t i; - assert(tbl); + assert(tbl != NULL); assert(nbytes > 0); assert(!check_uptr_overflow(addr, nbytes-1)); -- cgit v1.2.3 From 633fa4cd1fc8ef7f1b79bc4068b91c97fe4af4ef Mon Sep 17 00:00:00 2001 From: johpow01 Date: Thu, 30 Jul 2020 17:11:03 -0500 Subject: MISRA cleanup in mem_region and semihosting files MISRA defect cleanup and general code cleanup in mem_region.c and semihosting.c. This task also called for cleanup of the ARM NOR flash driver but that was removed at some point since the Jira task was created. This patch fixes all MISRA defects in these files except for a few "Calling function "console_flush()" which returns error information without testing the error information." errors which can't really be avoided. Defects Fixed File Line Rule lib/semihosting/semihosting.c 70 MISRA C-2012 Rule 14.4 (required) lib/semihosting/semihosting.c 197 MISRA C-2012 Rule 14.3 (required) lib/semihosting/semihosting.c 210 MISRA C-2012 Rule 14.4 (required) lib/utils/mem_region.c 128 MISRA C-2012 Rule 12.1 (advisory) Signed-off-by: John Powell Change-Id: I21a039d1cfccd6aa4301da09daec15e373305a80 --- lib/utils/mem_region.c | 35 ++++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 15 deletions(-) (limited to 'lib/utils/mem_region.c') diff --git a/lib/utils/mem_region.c b/lib/utils/mem_region.c index 6bd78ba82..fec086b8c 100644 --- a/lib/utils/mem_region.c +++ b/lib/utils/mem_region.c @@ -33,7 +33,7 @@ void clear_mem_regions(mem_region_t *tbl, size_t nregions) size_t i; assert(tbl != NULL); - assert(nregions > 0); + assert(nregions > 0U); for (i = 0; i < nregions; i++) { assert(tbl->nbytes > 0); @@ -64,28 +64,32 @@ void clear_map_dyn_mem_regions(struct mem_region *regions, const unsigned int attr = MT_MEMORY | MT_RW | MT_NS; assert(regions != NULL); - assert(nregions > 0 && chunk > 0); - - for ( ; nregions--; regions++) { - begin = regions->base; - size = regions->nbytes; - if ((begin & (chunk-1)) != 0 || (size & (chunk-1)) != 0) { + assert(nregions != 0U); + assert(chunk != 0U); + + for (unsigned int i = 0U; i < nregions; i++) { + begin = regions[i].base; + size = regions[i].nbytes; + if (((begin & (chunk-1U)) != 0U) || + ((size & (chunk-1U)) != 0U)) { INFO("PSCI: Not correctly aligned region\n"); panic(); } - while (size > 0) { + while (size > 0U) { r = mmap_add_dynamic_region(begin, va, chunk, attr); if (r != 0) { - INFO("PSCI: mmap_add_dynamic_region failed with %d\n", r); + INFO("PSCI: %s failed with %d\n", + "mmap_add_dynamic_region", r); panic(); } - zero_normalmem((void *) va, chunk); + zero_normalmem((void *)va, chunk); r = mmap_remove_dynamic_region(va, chunk); if (r != 0) { - INFO("PSCI: mmap_remove_dynamic_region failed with %d\n", r); + INFO("PSCI: %s failed with %d\n", + "mmap_remove_dynamic_region", r); panic(); } @@ -115,18 +119,19 @@ int mem_region_in_array_chk(mem_region_t *tbl, size_t nregions, size_t i; assert(tbl != NULL); - assert(nbytes > 0); + assert(nbytes != 0U); assert(!check_uptr_overflow(addr, nbytes-1)); region_start = addr; - region_end = addr + (nbytes - 1); - for (i = 0; i < nregions; i++) { + region_end = addr + (nbytes - 1U); + for (i = 0U; i < nregions; i++) { assert(tbl->nbytes > 0); assert(!check_uptr_overflow(tbl->base, tbl->nbytes-1)); start = tbl->base; end = start + (tbl->nbytes - 1); - if (region_start >= start && region_end <= end) + if ((region_start >= start) && (region_end <= end)) { return 0; + } tbl++; } -- cgit v1.2.3